如何在 QThread 中使用 QTimer?
Posted
技术标签:
【中文标题】如何在 QThread 中使用 QTimer?【英文标题】:How to use QTimer inside QThread? 【发布时间】:2012-10-10 06:59:38 【问题描述】:我有一个类,QObject 的一个子类。我正在 QThread 中为该类创建一个实例。我想在课堂上使用 QTimer。但是计时器没有启动,因为调用者线程是一个woker线程。我该如何解决?
【问题讨论】:
在 *** 上有一个类似并已回答的问题:***.com/questions/10492480/… QThread 内部的 Tats。但是我想在一个是 qobject 的子类的类中使用,并且我的 qobject 类的实例是在 qthread 中创建的。由于我班级的调用者是 qthread,我无法在班级中使用 qtimer。 显示代码或者它没有发生! 调用者线程也是QThread的线程子类。 【参考方案1】:好吧,你能不能在一些辅助对象中创建一个槽,该对象位于主线程中并且是该类的成员,并调度计时器的创建并从你的类开始(并且可以选择检查当前线程是否不是事件从那时起循环,在那里启动计时器是安全的)?因此,当您需要创建计时器时,您只需在主线程中向您的辅助对象发出信号,它应该可以工作。
【讨论】:
谢谢。我会试试这个。有没有可能在我的课堂上发布活动?这样 cal 就可以进入主线程,并且事件将从循环中调度吗?? 我认为这应该没问题,因为这就是它们跨越线程的插槽/信号的整个想法。但是我认为如果你的类是在一个非主线程中创建的,那么你需要记住在 helper memeber 对象上执行 moveToThread(以上是关于如何在 QThread 中使用 QTimer?的主要内容,如果未能解决你的问题,请参考以下文章
QThread 与 QTimer 和 QSerial - 育儿
在 QTimer Singleshot 之后终止 QThread
在不开启事件循环的线程中使用QTimer(QThread::run函数自带事件循环,在构造函数里创建线程,是一种很有意思的线程用法) good