I found a way to solve my problem, but I am not sure if this is the perfect one.
After sending message over DBus I am creating internal event loop, like this
@
QEventLoop loop;
QTimer timer;
timer.setSingleShot(true);
connect(&timer, SIGNAL(timeout()), &loop, SLOT(quit()));
connect(this, SIGNAL(replayReceived()), &loop, SLOT(quit()));
timer.start(5000);
loop.exec();
if (timer.isActive) //replay received before timer
else //timer elapsed, no replay from client
@
Such construction allows process to continue processing of main event loop and to keep certain method in wait condition realized by event loop.
Now if user does or dose not replay I can handle it in if condition.