一杯清酒邀明月
天下本无事,庸人扰之而烦耳。
posts - 3121,comments - 209,views - 578万

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]() { function();} );

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

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

复制代码
1 QTimer *timer40sCheck = new QTimer(this);
2     timer40sCheck->setTimerType(Qt::PreciseTimer);//提高定时器精度
3     connect(timer40sCheck,&QTimer::timeout,this,[=]() mutable{
4         function();
5     });
6     timer40sCheck->start(40000);
复制代码

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

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

 

posted on   一杯清酒邀明月  阅读(826)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
历史上的今天:
2022-05-24 Qt 快速转换路径(/斜杠与\反斜杠转换)
2022-05-24 Qt ‘/‘和‘\‘转化的方式
2021-05-24 Qt horizontal line和vertical line的使用方法及在 QGridLayout 中的应用
2021-05-24 Qt 在Qwidget里添加控件
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示