IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> Qt定时器QBasicTimer、startTimer、QTimer使用总结 -> 正文阅读

[C++知识库]Qt定时器QBasicTimer、startTimer、QTimer使用总结

  1. QBasicTimer
    这个定时器类是一个 轻量级的、较底层的、被Qt内部使用的定时器类。如果在你的应用程序中使用定时器类,推荐使用QTimer类,而不是这个类。该类和QTimer类类似,也提供start、isActive、stop函数接口。该类的对象不支持复制,即没有拷贝构造函数和赋值函数,但支持移动语义,所以可以在支持移动语义的容器(如:std::vector)中维护该类对象的列表。Qt官方自带的例子
    Examples\Qt-XX.XX.XX\widgets\widgets\wiggly
    工程讲解了该定时器类的用法(Example在Qt的安装目录下,其中XX.XX.XX为Qt的版本号,如:5.14.1)。
  2. startTimer
    该函数是QObject类的函数。启动一个定时器并返回该定时器基于整形的定时器id。其有如下两个重载函数:
int QObject::startTimer(int interval, Qt::TimerType timerType = Qt::CoarseTimer)
int QObject::startTimer(std::chrono::milliseconds time, Qt::TimerType timerType = Qt::CoarseTimer)

当调用startTimer后,每隔interval毫秒(第1个函数)或time(第2个函数)就会发送一个定时器事件,直到 killTimer函数被调用才停止发送。如果interval或time为0,则每次当系统中再也没有其它事件即当事件队列中的事件全部处理完时才会发送一次定时器事件。当定时器事件发生时,QOjbect或其子类可以在虚函数timerEvent中捕捉定时器事件,timerEvent函数的参数就是QTimerEvent对象即定期是事件对象。如果有多个定时器正在运行,可以用 QTimerEvent::timerId()找出哪个是正在激活使用的定时器。

 class MyObject : public QObject
  {
      Q_OBJECT

  public:
      MyObject(QObject *parent = nullptr);

  protected:
      void timerEvent(QTimerEvent *event) override;
  };

  MyObject::MyObject(QObject *parent)
      : QObject(parent)
  {
      startTimer(50);     // 50-millisecond timer
      startTimer(1000);   // 1-second timer
      startTimer(60000);  // 1-minute timer

      using namespace std::chrono;
      startTimer(milliseconds(50));
      startTimer(seconds(1));
      startTimer(minutes(1));

      // since C++14 we can use std::chrono::duration literals, e.g.:
      startTimer(100ms);
      startTimer(5s);
      startTimer(2min);
      startTimer(1h);
  }

  void MyObject::timerEvent(QTimerEvent *event)
  {
      qDebug() << "Timer ID:" << event->timerId();
  }

注意:定时器的精度依赖于操作系统和硬件。timerType参数可以用来自定义定时器精度,具体可以查看Qt assist对Qt::TimerType 枚举的描述。大部分的平台支持20ms的精度,如果Qt不能提供指定要求的定时器事件,则它会默默地丢弃一些定时器事件。
3. QTimer
这个是比较高端的定时器类,建议大家用这个。这个应该是大家用的比较多的了,故在此不再详述,请参考Qt assist中的说明。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-08 22:10:02  更:2022-03-08 22:13:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:45:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码