作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 QObject 的子类,称为 myObject,它在构造函数的堆上分配了一个 QTimer 数据成员。 myObject 还有一个插槽,它连接到构造函数中的 QTimer timeout() 信号。我将 myObject 的指针称为 myObject_ptr。
我想在与主线程不同的线程上运行 myObject。遵循相对较新的建议,我不继承 QThread。在主线程中,我使用 myObject 如下:
QThread *thread = new QThread(this);
myObject_ptr->moveToThread(thread);
connect(myObject_ptr, SIGNAL(destroyed(), thread, SLOT(quit())); //thread not needed if no object
connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater())); //to avoid memory leak
connect(thread, SIGNAL(terminated()), thread, SLOT(deleteLater())); //to avoid memory leak
thread->start();
最佳答案
我解决了我的问题!!在 MyObject 的构造函数中,定时器在堆上分配如下:
timer_ptr = new QTimer(this);
timer_ptr = new QTimer(0);
timer_ptr->deleteLater();
关于QTimer 超时信号在不同线程上运行时不调用槽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13214730/
我是一名优秀的程序员,十分优秀!