QT “Timers can only be used with threads started with QThread”的解决办法~

在做多线程的时候遇到这样的问题,提示“Timers can only be used with threads started with QThread”。

问题描述:在子线程中需要用到一个定时器,刚开始是这样写的,报错了:

MyThread::run<span style="font-family: Arial, Helvetica, sans-serif;">()</span>
{
    readTimer = new QTimer();
    readTimer->setInterval(2000);
    readTimer->setSingleShot(true); //不重复执行
    connect(readTimer, SIGNAL(timeout()), this, SLOT(onTimerOut()));
}

结果就报错"Timers can only be used with threads started with QThread",意思是说只能在一个线程中使用定时器~

瞬间无语了~再找了一遍确定是只有在子线程中使用到这个定时器啊~于是就继续百度这个问题,英文一大堆,就是没找到个靠谱的~偏偏就不信没有解决方案了~

于是就再看了遍代码,发现了定时器的定义都放在run()中,难道是这个原因?果断将这些定义全部搬到构造函数中,一运行,就没有任何错误了。

有时候问题很小,要是没细心、耐心去找,就无法解决问题~

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值