问题描述:
程序上有槽函数触发频率变化的需求。在使用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. centos6 rpm安装mysql_Centos6下rpm安装MySQL5.6
  2. Quick Audience组织和工作空间功能解读
  3. 开关电源环路的零极点可以在反馈端补偿吗_【干货分享】开关电源环路补偿设计步骤讲解...
  4. 更改span标签样式_CSS 内嵌样式
  5. Android NDK MediaCodec在ijkplayer中的实践
  6. linux tunl0 ip,Centos7下lvs负载均衡lvs-tun模式配置
  7. GridView 中 Bind和Eval的区别详解
  8. SQL插入数据的方法
  9. ucc编译器(x86移植)
  10. 你敢信?FBI 的190万条恐怖分子监控名单竟无密码保护且不慎遭暴露
  11. 【转】飞鸽端口号被占用时的解决方法
  12. 2020 年最牛逼的 10 门编程语言
  13. 弘辽科技:淘宝改SKU图片会影响权重吗?
  14. 对事件流的小故事理解
  15. 数据分析中的数据处理以及特征分析
  16. 视频用txt文件播放物联网
  17. java一系列图片加载_RxJava系列文章(一) - 网络图片加载水印一般写法
  18. SpringCloud-4.服务网关(GateWay)
  19. 64位系统究竟牛逼在哪里?
  20. 15个权威的PLC学习资料下载地址 (西门子、三菱、欧姆龙)

热门文章

  1. 【程序员面试金典】面试题 10.11. 峰与谷
  2. GraspNet:一种用于低功耗器件抓取实时检测的高效卷积神经网络
  3. 如何使用iTunes快速组织iPhone和iPad上的应用程序
  4. 用Xpath选择器解析网页(lxml)
  5. “华为大法”对车企是“加持”还是“拖累”?
  6. 电子科技大学现代电子信息系统综合实验课程部分模拟试题
  7. 最佳线程数 6666 epoll触发量
  8. windows打开文件夹闪退,黑屏
  9. “流量”还是“留量”?Starday跨境电商平台全都收入囊中
  10. 安卓开发权威指南!2021大厂Android面试经验,不吃透都对不起自己