Starting QTimer In A QThread

前端 未结 6 2245
醉梦人生
醉梦人生 2020-12-01 11:05

I am trying to start a QTimer in a specific thread. However, the timer does not seem to execute and nothing is printing out. Is it something to do with the timer, the slot o

6条回答
  •  遥遥无期
    2020-12-01 11:55

    As I commented (further information in the link) you are doing it wrong :

    1. You are mixing the object holding thread data with another object (responsible of doIt()). They should be separated.
    2. There is no need to subclass QThread in your case. Worse, you are overriding the run 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...

提交回复
热议问题