A couple thoughts, maybe useful, maybe not...

I think what’s happening is not that the signal/slot is being queued, but that the button-press event itself is being held up in the GUI event queue. This would imply that any user interface action following a press of your button will be delayed until the slot code completes.

If experiment shows that this is true, then you might want either to perform the complex action in another thread, or to find safe points of interruption where you can either return to the event loop (first queuing an event that will start the next phase of the process) or call QCoreApplication::processEvents (if stacking other events on top of this process will work — this sounds simpler at first, but remember that all pending events will be processed before returning from QCoreApplication::processEvents to your process code!).

Suppose the user presses the button five times during the span of time it takes to complete the action of two presses. You will have to decide which is worse: either you ignore three button presses, or three actions commence after the user has stopped pressing the button. If the user will probably press the button some particular number of times (set in his or her mind before beginning to press the button), then it would be less annoying to do all the actions, when you can get to them; but if the user probably presses an undetermined number of times, until a desired result is observed, then it would be better to drop presses to which you can’t respond immediately.

You’ll need either a flag (set when beginning the process, cleared when it’s finished, and tested on each button press to determine whether to start a process or ignore the press) or a counter (incremented when the button is pressed, decremented when the process finishes, tested after increment to determine whether the process must be started, and tested after decrement to determine whether to repeat the process). If you use a counter and a separate thread, the counter must be protected against concurrent updates.