QT 定时器的详细使用方法和注意点 Qobject QTimer sleep
qt有定时器我知道的有三种,一个是sleep,一个是time类,一个QObject自带的定时方法.我现在喜欢用这个
1 定义一个全局的变量用于记录定时器id,需要几个定时器就定义几个id.注意初始化id时候最好设置为0,因为 重复执行killTimer(0)不会报错
int temtimerID01 = 0 ;
// int QObject::startTimer ( int interval ) ; //正常情况下ID应该保存为全局变量
// void QObject::timerEvent ( QTimerEvent * event );//在这个里面判断时不时这个ID,做相应的处理
// void QObject::killTimer ( int id ); //通过ID杀死当前定时器
2 在public中重写这个函数,所有的中断事件都在这里面处理
具体实现如下 记得添加头文件 #include <QTimerEvent>
3 使用如下
killTimer(timerID01);//开启一帧数据传输之后,开启定时器.开启前先关掉以前的定时器
timerID01 = startTimer(3000);//三秒定时//后期根据实际情况反映//不过3秒应该够了
4 注意点:
killTimer(timerID01);时候如果timerID是0,则不管kill几次都可以,但是其他情况多次kill可能出错,因此在每次正常情况kill之后都加上一句timrID=0,亲测可以使用
定时器第二种 qtimer
//只执行一次
QTimer::singleShot( 3000, [this]() { function();} );
继承自当前进程,3秒后执行一次function()。
多次执行 注意定时器延时默认精度不高,需要手动设置更高精度
QTimer *timer40sCheck = new QTimer(this); timer40sCheck->setTimerType(Qt::PreciseTimer);//提高定时器精度 connect(timer40sCheck,&QTimer::timeout,this,[=]() mutable{ function(); }); timer40sCheck->start(40000);
不使用定时器的用法,做简单延时但是不影响界面
QCoreApplication::processEvents(QEventLoop::AllEvents); Sleep(100);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?