As I commented (further information in the link) you are doing it wrong :
- You are mixing the object holding thread data with another object (responsible of
doIt()
). They should be separated. - There is no need to subclass
QThread
in your case. Worse, you are overriding therun
method without any consideration of what it was doing.
This portion of code should be enough
QThread* somethread = new QThread(this);
QTimer* timer = new QTimer(0); //parent must be null
timer->setInterval(1);
timer->moveToThread(somethread);
//connect what you want
somethread->start();
Now (Qt version >= 4.7) by default QThread
starts a event loop in his run()
method. In order to run inside a thread, you just need to move the object. Read the doc…