1 创建定时器
毫秒为单位
// 创建定时器对象
mytimer = new QTimer();
// 设置时间事件触发的时间间隔,经过一次时间间隔之后触发timeout函数
mytimer->setInterval(100);
// 要是在子线程内开启定时器,还需要注意信号与槽链接的第五个参数
connect(mytimer,&QTimer::timerout, this, &Threadclass::stop, QT::DirectConnection);
mytimer->start();
在一个线程内创建了多个定时器,定时器使用时注意其两个特性:
1、定时器之间不是并行处理数据,而是分片占用主线程资源 ,且定时器完成其对应的slot函数任务后,下一个定时器才会开始执行其slot函数任务;
2、当定时器的间隔时间小于其slot函数任务的执行时间时,一旦定时器timeout时,其slot函数不会终止执行,只是暂停,内部变量仍然保存,而后继续执行。
2 停止和删除定时器
if(mytimer->isActive())
{
mytimer->stop();
delete mytimer;
}
3 单次定时器
到时间执行一次连接的槽函数
QTimer::singleShot(10,this,$Threadclass::myslot);
参考链接
在子线程内使用计时器
QT之QTimer详解以及结合多线程中开启定时器的示例
Qt 定时器放在线程中执行,支持随时开始和停止定时器。