QT学习笔记(七):定时器事件的2种常用使用方式

Qt中定时器的使用有2种方法:一种是使用QObject类提供的定时器通过重载 timerEvent 事件处理过程函数,一种就是使用QTimer类。
其中QTimer 类来实现定时器使用的更多,它提供了更高层次的编程接口,比如可以使用信号和槽,还可以设置只运行一次的定时器。

1.使用QObject类提供的定时器

头文件添加:

private:int id1, id2, id3;
protected:void timerEvent(QTimerEvent *event); //声明定时器时间

源文件添加:

//  构造函数id1 = startTimer(1000);    // 开启一个1秒定时器,返回其IDid2 = startTimer(1500);id3 = startTimer(2200);void Widget::timerEvent(QTimerEvent *event)
{QTime time = QTime::currentTime();        // 获取当前时间QString text = time.toString("hh:mm");      // 转换为字符串if((time.second() % 2) == 0)text[2]=' ';                          // 每隔一秒就将“:”显示为空格ui->lcdNumber->display(text);qDebug() << "timer1";}else if (event->timerId() == id2) {qDebug() << "timer2";}else {qDebug() << "timer3";}
}

通过从startTimer返回的ID传入void QObject::killTimer ( int id ) 函数中杀死定时器,结束定时器进入超时处理。

killTimer (id1);

2.使用QTimer定时器类

头文件添加:

private slots:void timerUpdate();        // 声明定时器溢出函数

源文件添加:

#include <QTimer>// 构造函数
QTimer *timer = new QTimer(this);                              // 创建一个新的定时器
connect(timer, &QTimer::timeout, this, &Widget::timerUpdate);   // 关联定时器的溢出信号到槽上
timer->start(1000);                                          // 设置溢出时间为1秒,并启动定时器void Widget::timerUpdate()                  // 定时器溢出处理
{QTime time = QTime::currentTime();      // 获取当前时间QString text = time.toString("hh:mm");  // 转换为字符串if((time.second() % 2) == 0)text[2]=' ';                        // 每隔一秒就将“:”显示为空格ui->lcdNumber->display(text);
}

结果:

只运行一次的定时器:

QTimer::singleShot(10000, this, &Widget::close);

QT学习笔记(七):定时器事件的3种常用使用方式相关推荐

  1. OpenCV学习笔记(二):3种常用访问图像中像素的方式

    OpenCV学习笔记(二):3种常用访问图像中像素的方式 #include <opencv2/opencv.hpp>using namespace cv; using namespace ...

  2. QT学习笔记之对话框

    QT学习笔记之对话框 对话框是一种用户界面(窗口),它的主要功能是输出信息和接收用户的输入.在每个对话框内一般都有一些控件,对话框依靠这些控件与用户进行交互. 1)       模式对话框:用户只能与 ...

  3. day03_js学习笔记_03_js的事件、js的BOM、js的DOM

    day03_js学习笔记_03_js的事件.js的BOM.js的DOM ================================================================ ...

  4. websocket 获取连接id_Swoole学习笔记七:搭建WebSocket长连接 之 使用 USER_ID 作为身份凭证...

    Swoole学习笔记七:搭建WebSocket长连接 之 使用 USER_ID 作为身份凭证 2年前 阅读 3678 评论 0 喜欢 0 ### 0.前言 前面基本的WebSocket操作,我们基本都 ...

  5. Qt 学习笔记(5)绘图 五子棋游戏

    在上一篇博客C++ Qt学习笔记(4)绘图中介绍了Qt中的绘图方法,基于上一篇的博客的知识,使用QPainter设计一个五子棋的棋盘,后续会完成五子棋的游戏设计. 1. 棋盘的设计 首先需要绘制棋盘的 ...

  6. 【K210】K210学习笔记七——使用K210拍摄照片并在MaixHub上进行训练

    [K210]K210学习笔记七--使用K210拍摄照片并在MaixHub上进行训练 前言 K210准备工作 K210如何拍摄照片 准备工作 拍摄相关代码定义 用K210拍摄到的照片在MaixHub平台 ...

  7. ESP32学习笔记(七) 复位和时钟

    ESP32学习笔记(七) 复位和时钟 目录: ESP32学习笔记(一) 芯片型号介绍 ESP32学习笔记(二) 开发环境搭建 VSCode+platformio ESP32学习笔记(三) 硬件资源介绍 ...

  8. QT学习笔记(摘抄)

    QT学习笔记-1.QT主要的对象 说来惭愧学习c++很长时间了一直没有使用c++开发过软件界面 所以现在想认认真真的学习一个c++图形界面框架库 本来想学习Xwidget但是这个资料不大好找 有啥问题 ...

  9. STM32学习笔记(七)---SysTick

    STM32学习笔记(七)-SysTick 文章目录 STM32学习笔记(七)---SysTick 一.SysTick简介 二.SysTick功能框图 三.SysTick寄存器 四.SYSTICK使用 ...

最新文章

  1. Oracle-AWR性能报告解读
  2. 中年离职的平庸产品,该如何面对人生的下半场?
  3. C++——《数据结构与算法》实验——排序算法的实现
  4. python需要联网运行吗_如何暂停在终端中运行的python脚本
  5. 工作305:对选择的数值清空
  6. 算法高级(11)-缓存淘汰算法研究
  7. Tomcat学习总结(16)—— Tomcat优化时的参数分析
  8. Java学习——继承和多态
  9. 如何写论文?看下这份《科研论文撰写策略》为你指点一二
  10. Borland Delphi7 企业版注册方法
  11. 易语言mysql 记录集_求一个易语言返回mysqlcha询结果记录集的例子
  12. 绕过IceSword文件检测的Trojan.Win32.Mnless.zpc/ojj6erv.sys
  13. jeecms mysql_jeecms学习笔记
  14. 判断今天是星期几 暴力枚举
  15. Cell Host | 张群业/王哲/张澄-肠道微生物群失调加重腹主动脉瘤
  16. OSChina 周一乱弹 —— 鱼生不值得
  17. Python 科赫曲线绘制
  18. 史上最全的边缘计算应用场景
  19. 你的华为手机还会卡?那是这3个功能没设置吧,越早关掉越好
  20. 步步为营-墙棋AI人机对战(Android)

热门文章

  1. 自己动手写cpu 光盘_自己动手写CPU配套源码
  2. java json转二进制数据_JSON字符串中的二进制数据 . 比Base64更好的东西
  3. 非线性回归 - 案例按步骤详解 -(SPSS建模)
  4. 计算机网络划分的标准,计算机网络基础
  5. 图灵奖大佬+谷歌团队,为通用人工智能背书!CV 任务也能用 LM 建模!
  6. CAT 3.0 开源发布,支持多语言客户端及多项性能提升
  7. 论文浅尝 | 用对抗学习做知识表示(NAACL2018)
  8. 各种损失函数比较-带你斩获offer
  9. Android官方开发文档Training系列课程中文版:管理系统UI之隐藏状态条
  10. Android官方开发文档Training系列课程中文版:创建自定义View之View的优化