Quote Originally Posted by high_flyer
Once exec() is called, run() is "halted" on that spot till quit() or exit() is called, which means, that I can't have a thread run an endless loop AND receive signals from other threads (i.e running an event loop) by means of processEvents() or similar.
The only solution I see is to create yet another object with my thread that will run my work loop, while my "parent" thread object runs the event loop...
Yes, you are right. You may only choose between running your own loop and perform some work (in run() method) or running event loop (invoking exec() method).

The solution you mentioned is the usual sort of things, but it does not solve anything :-). You have main thread where you invoke app.exec(). But before calling exec() you usually create other thread and start it. Suppose that you are running your own loop (not invoking exec()). In this case new thread is considered as a usual object which can receive signals, but the slots of this new thread will be executed in the main thread (generally in the thread where you created your child thread and connected signals to the slots)

But why do you want to pass signals to your child thread? If you want to pass any information to your child thread without any event loop I'm afraid you will have to do this via members of the child thread object (using mutex, of course)