QTimer在QThread环境中失效的问题

QTimer在非QThread的环境下能正常工作。但在QThread环境下,需要做一些改动才能正常工作。

创建Qt的线程有两种方式:

1. 子例化QThread

可以在虚函数run中启动定时器,大致的代码如下:

//构造函数,继承QThread Thread::Thread(QObject *parent) : QThread(parent) { } void Thread::run() { QTimer* timer = new QTimer; //多线程环境中,此处设父指针为this,会导致创建线程失败,定时器可用 connect(timer, SIGNAL(timeout()), this, SLOT(display())); timer->start(1000); exec(); //开启事件循环 } //调用,启动线程 Thread* thread = new Thread; //此处设父指针为this,关闭应用程序时会发生崩溃 thread->start();

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpwjff.html