Try adding exec(); at the end of the run function. Its going to start an event loop for the thread and you will be able to connect some signals to solots in the thread, using Qt::QueuedConnection.