打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Qt非阻塞延时大坑
userphoto

2020.01.21

关注

网上广泛流传一种延时:

  1. QTime dieTime = QTime::currentTime().addMSecs(mSec);
  2. while (QTime::currentTime() < dieTime) {
  3. QCoreApplication::processEvents(QEventLoop::AllEvents, 50); //可设置最小间隔
  4. }

QCoreApplication::processEvents是个静态函数, 存在延时被修改的可能性. 

假设点击一个按键, 用上面这个函数延时50ms, 但同时同一线程的定时器延时了2000ms,那么50ms就会被更新成2000ms!

挖了个大坑- -!

  1. void delay(int mSec)
  2. {
  3. QEventLoop loop;
  4. QTimer::singleShot(mSec, &loop, SLOT(quit()));
  5. loop.exec();
  6. }

此延时亲测可用.  

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
QT 中的sleep
Qt生成随机数的方法
01、Qt产生随机数
QT学习笔记-7.QString和QByteArray - Cpper - C++博客
Qt5.15.2源码解析之qcoreapplication类Part1
Qt中如何退出程序代码
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服