【问题标题】:How to use QTimer inside QThread?如何在 QThread 中使用 QTimer?
【发布时间】:2012-10-10 06:59:38
【问题描述】:

我有一个类,QObject 的一个子类。我正在 QThread 中为该类创建一个实例。我想在课堂上使用 QTimer。但是计时器没有启动,因为调用者线程是一个woker线程。我该如何解决?

【问题讨论】:

  • 在 Stackoverflow 上有一个类似并已回答的问题:stackoverflow.com/questions/10492480/…
  • QThread 内部的 Tats。但是我想在一个是 qobject 的子类的类中使用,并且我的 qobject 类的实例是在 qthread 中创建的。由于我班级的调用者是 qthread,我无法在班级中使用 qtimer。
  • 显示代码或者它没有发生!
  • 调用者线程也是QThread的线程子类。

标签: c++ qt4


【解决方案1】:

好吧,你能不能在一些辅助对象中创建一个槽,该对象位于主线程中并且是该类的成员,并调度计时器的创建并从你的类开始(并且可以选择检查当前线程是否不是事件从那时起循环,在那里启动计时器是安全的)?因此,当您需要创建计时器时,您只需在主线程中向您的辅助对象发出信号,它应该可以工作。

【讨论】:

  • 谢谢。我会试试这个。有没有可能在我的课堂上发布活动?这样 cal 就可以进入主线程,并且事件将从循环中调度吗??
  • 我认为这应该没问题,因为这就是它们跨越线程的插槽/信号的整个想法。但是我认为如果你的类是在一个非主线程中创建的,那么你需要记住在 helper memeber 对象上执行 moveToThread(
    ) ,因为那时你不会得到你需要的东西并且插槽将被调用创建类实例的线程。
  • 谢谢!我尝试使用 moveToThread(),它满足了我的期望。
猜你喜欢
  • 2022-08-05
  • 2021-01-08
  • 2012-05-16
  • 2019-02-01
  • 2017-01-01
  • 1970-01-01
  • 2020-03-12
  • 2020-09-30
  • 2013-10-15
相关资源
最近更新 更多