当前位置: 首页 > 网络知识

Qt 定时器的详细使用方法和注意点 Qobject QTimer

时间:2026-01-26 14:19:50

1  定义一个全局的变量用于记录定时器id,需要几个定时器就定义几个id.注意初始化id时候最好设置为0,因为  重复执行killTimer(0)不会报错

1 int temtimerID01 = 0 ; 2 // int QObject::startTimer ( int interval ) ; //正常情况下ID应该保存为全局变量 3 // void QObject::timerEvent ( QTimerEvent * event );//在这个里面判断时不时这个ID,做相应的处理 4 // void QObject::killTimer ( int id ); //通过ID杀死当前定时器

2  在public中重写这个函数,所有的中断事件都在这里面处理

具体实现如下  记得添加头文件  

#include <QTimerEvent>

3  使用如下

1   killTimer(timerID01);//开启一帧数据传输之后,开启定时器.开启前先关掉以前的定时器 2 timerID01 = startTimer(3000);//三秒定时//后期根据实际情况反映//不过3秒应该够了

4  注意点:

killTimer(timerID01);

时候如果timerID是0,则不管kill几次都可以,但是其他情况多次kill可能出错,因此在每次正常情况kill之后都加上一句timrID=0,亲测可以使用

定时器第二种 qtimer

//只执行一次

QTimer::singleShot( 3000, [this]() );

继承自当前进程,3秒后执行一次function()。

多次执行 注意定时器延时默认精度不高,需要手动设置更高精度

1 QTimer *timer40sCheck = new QTimer(this); 2 timer40sCheck>setTimerType(Qt::PreciseTimer);//提高定时器精度 3 connect(timer40sCheck,&QTimer::timeout,this,[=]() mutable); 6 timer40sCheck>start(00);

不使用定时器的用法,做简单延时但是不影响界面

QCoreApplication::processEvents(QEventLoop::AllEvents); Sleep(100);



上一篇:Qt QTimer::singleShot用法
下一篇:JSON的基本使用(详解)
Qt
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器
  • 英特尔第五代 Xeon CPU 来了:详细信息和行业反应
  • 由于云计算放缓引发扩张担忧,甲骨文股价暴跌
  • Web开发状况报告详细介绍可组合架构的优点
  • 如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳
  • 美光在数据中心需求增长后给出了强有力的预测
  • 2027服务器市场价值将接近1960亿美元
  • 生成式人工智能的下一步是什么?
  • 分享在外部存储上安装Ubuntu的5种方法技巧
  • 全球数据中心发展的关键考虑因素
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器

    英特尔第五代 Xeon CPU 来了:详细信息和行业反应

    由于云计算放缓引发扩张担忧,甲骨文股价暴跌

    Web开发状况报告详细介绍可组合架构的优点

    如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳

    美光在数据中心需求增长后给出了强有力的预测

    2027服务器市场价值将接近1960亿美元

    生成式人工智能的下一步是什么?

    分享在外部存储上安装Ubuntu的5种方法技巧

    全球数据中心发展的关键考虑因素