首页| 论坛| 消息

标题:Qt的多线程是不是不能使用QTimer
作者:wcrqpdb
日期:2019-11-06 19:32
内容:

会报这个QObject::startTimer: Timers cannot be started from another thread


#1 [沉默小ai 11-06 23:02]
可以使用,这个提示是你跨线程操作QTimer了 这个是不允许的
#2 [wcrqpdb 11-07 01:49]
但这个QTimer我是在继承QThread这个类里创建的吖,在.h声明.cpp构造函数里创建
#3 回 wcrqpdb 的帖子 [uidab 11-07 08:03]
wcrqpdb:但这个QTimer我是在继承QThread这个类里创建的吖,在.h声明.cpp构造函数里创建 (2019-11-07 01:49)
那就不对了,继承QThread只有在run中是另外一个线程,其他定义都属于主线程。
看看movetothread吧
#4 [wcrqpdb 11-07 11:03]
我见网上教程说有2种方法创建,第一种用一个类继承QThread,然后重新改写虚函数run()。当要开启新线程时,只需要实例该类,然后调用函数start(),就可以开启一条多线程。第二种方法是继承一个QObject类,然后利用moveToThread()函数开启一个线程槽函数,将要花费大量时间计算的代码放入该线程槽函数中。我是用第一种的,你说用movetothread那是第二中的。那用第一种方法要怎么用QTimer
网上教程https://blog.csdn.net/naibozhuan3744/article/details/81174681
#5 [沉默小ai 11-07 11:23]
你实在是想用继承QThread的方式的话,把QTimer 的对象在run函数内创建,这样这个QTimer就属于这个线程了,继承的Qthread的类的创建、构造函数的实际上还是由 创建 继承的Qthread的类 的线程操作的。

<< 1 2 3 >> (1/7)

回复 发表
主题 版块