In my application, several threads generate graphical data which they then send (via signals and slots) to the main GUI thread for display. Most of the time things work pretty smoothly, but on occasions things seem to 'hang' and the GUI can go for several minutes without being updated, even though the threads may still be sending data tens of times every second. It's as though the main GUI thread is failing to action its event queue properly.

Now, I am familiar of course with the use of QCoreApplication:: processEvents() within a thread, during time-consuming actions, to make sure that the thread acts upon its own event queue. However, how do I force my main GUI thread to process its events properly when it has nothing else to do except lie idle until it receives a signal from one of its threads to display some data?

Alternatively, is there some other possible explanation (and remedy) for this frustrating behaviour?

Thanks,
Stephen.