I have subclassed worker QThread that is sending results of it's work in signal to a slot.

Within the slot I call QMessageBox::question(..) to let user confirm action based on thread's result. However if there comes more than one signal at once msgbox is shown for each of them before previous ones have been answered. So I end up with multiple boxes on screen.

If I use Qt::BlockingQueuedConnection instead there is no problem, but worker thread won't do it's work in background while the box is shown.

I don't quite understand how Qt event processing works but it seems like it blocks for the QMessageBox::qeustion(..) but still by some black magic (or not) it gets to resume event processing and finally calls the same slot function again...

How could I prevent the slot from being called until it has been returned while letting worker thread keep doing it's job? Or is Qt::BlockingQueuedConnection the only way?

Thanks for any ideas