问题描述:
程序上有槽函数触发频率变化的需求。在使用Qt定时器触发槽函数的过程中发现,每秒钟1000次没有问题,在每秒钟30~50次的情况下出现了延迟。
主体代码如下:

    std::chrono::time_point lastTime = std::chrono::high_resolution_clock::now();m_grabImgTimer = new QTimer();connect(m_grabImgTimer, SIGNAL(timeout()), this, SLOT(TriggerGrabImaSlot()));m_grabImgTimer->start(1000/ 30);
void TriggerGrabImaSlot()
{std::chrono::time_point nowTime = std::chrono::high_resolution_clock::now();std::chrono::duration<double, std::milli> fp_ms = nowTime - lastTime;lastTimer = nowTime;std::cout << fp_ms.count() << " ms"<<std::endl;
}

10次的时候控制台打印

30次的时候控制台打印

造成原因:

On UNIX (including Linux, macOS, and iOS), Qt will keep millisecond accuracy for Qt::PreciseTimer. For Qt::CoarseTimer, the interval will be adjusted up to 5% to align the timer with other timers that are expected to fire at or around the same time. The objective is to make most timers wake up at the same time, thereby reducing CPU wakeups and power consumption.
On Windows, Qt will use Windows’s Multimedia timer facility (if available) for Qt::PreciseTimer and normal Windows timers for Qt::CoarseTimer and Qt::VeryCoarseTimer.
On all platforms, the interval for Qt::VeryCoarseTimer is rounded to the nearest full second (e.g. an interval of 23500ms will be rounded to 24000ms, and 20300ms to 20000ms).

结论
对精度有一定要求,并且还要使用QT的定时器,那么在创建定时器的时候,需要更改一下时钟的类型。

m_grabImgTimer->setTimerType(Qt::PreciseTimer);

使用QT定时器遇到的问题相关推荐

  1. QT 定时器与动画实现

    前言 Qt提供图形视图框架(Graphics View Framework).动画框架(The Animation Framework)和状态机框架(The State Machine Framewo ...

  2. Qt定时器QBasicTimer、startTimer、QTimer使用总结

    QBasicTimer 这个定时器类是一个 轻量级的.较底层的.被Qt内部使用的定时器类.如果在你的应用程序中使用定时器类,推荐使用QTimer类,而不是这个类.该类和QTimer类类似,也提供sta ...

  3. qt 定时器_Qt开源作品23-颜色拾取器

    ## 一.前言 在做很多项目的UI界面的时候,相信绝大部分人都有过抄袭别人的UI界面尤其是颜色的时候,毕竟十个程序员九个没有审美,或者说审美跟一坨屎一样,大家主要的精力以及擅长点都是在写功能实现具体功 ...

  4. Qt定时器的精度问题

    一.场景 一个网络音频采集场景如下: 数据发送端:嵌入式设备按照16kHz 16Bit连续不断采集音频数据,通过Socket进行发送 数据接受端:QT上位机开一个tcpserver,数据readRea ...

  5. 二、Qt定时器与文本编辑器制作《QT 入门到实战》

    学习目标 了解 qt 的 pixmap 了解 qt 的 label 如何显示图片 了解定时器的开启 了解定时器的关闭 了解文件如何进行读取 了解 QFileDialog 的使用 了解了一个文本编辑器的 ...

  6. QT定时器QTimer

    在Qt中使用定时器有两种方法,一种是使用QObiect类的定时器:一种是使用QTimer类.定时器的精确性依赖于操作系统和硬件,大多数平台支持20ms的精确度. 1.QObject类的定时器 QObj ...

  7. QT 定时器使用事项

    情景 有一种特殊情况,一旦窗口系统事件队列中的所有事件都已经被处理完,一个定时为0的QTimer就会到时间了.这也可以用来当提供迅速的用户界面时来做比较繁重的工作.(优点) QT app启动后不做任何 ...

  8. 使用QT定时器 隐藏 label

    widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimer> // 定时器对象Q ...

  9. qt定时器是阻塞的吗_吊打面试官 | 面试官:TCP真的可靠吗

    点击蓝字关注我哦 以下是本期干货视频视频后还附有文字版本哦 ▼<面试官:TCP真的可靠吗>▼ ps:请在WiFi环境下打开,如果有钱任性请随意 TCP真的可靠吗 面试官经常会问的一个问题是 ...

最新文章

  1. “算法战:DARPA下一代人工智能计划初见成效” 背景分析与初步研判
  2. mysql 同步日志文件_mysql 5.5 中对SLAVE relay-log相关日志文件同步的强化
  3. AngularJS 服务(Service)
  4. 双代号网络图节点编号原则_一表多图(表格/横道图/网络图)让计划编制效率提高10倍...
  5. ASP.NET中常用的优化性能方法(转)
  6. ipython 提示python已停止运行_你可能不知道的iPython使用技巧
  7. C# 中对象与JSON字符串相互转换的三种方法
  8. 软件设计师中级 百度知道_设计师应该知道什么
  9. P4721 【模板】分治 FFT
  10. 陶哲轩实分析例17.2.3
  11. android批量文件上传(android批量图片上传)
  12. Oracle Real Application Clusters (RAC)
  13. Collection与Map
  14. c 语言小游戏源程序,c/c++小游戏源代码
  15. 矩阵乘法 c/c++代码
  16. app小程序手机端Python爬虫实战11实现自动化登录考研帮app并滑动资讯信息
  17. 蚂蚁金服2019实习生面经总结(已拿口头offer)
  18. 微信小程序: wx:key详解
  19. vue 视频截图获取第一帧或者某一帧
  20. ★Oracle imp/impdp 导入dmp文件到数据库

热门文章

  1. (最完美)红米手机Pro的USB调试模式在哪里打开的经验
  2. vmware workstation pro15 安装win10系统详细无错步骤
  3. hbase数据备份或者容灾方案
  4. Java中的Stream流详解
  5. 认识计算机系统学情分析,小学信息技术《认识计算机》说课稿——获奖说课稿...
  6. 2022-2027年中国酒店床上用品行业市场全景评估及发展战略规划报告
  7. Talking about the weather
  8. python数据采集 爬虫 生意宝_Python爬虫实战 :批量采集股票数据,并保存到Excel中...
  9. 机器学习--线性回归R语言
  10. 性能分析—前端性能监测