第四章 QTimer和QElapsedTimer(读书)

 参考:

        《Qt6 C++开发指南》
4.8QTimer和QElapsedTimer_哔哩哔哩_bilibiliicon-default.png?t=N7T8https://www.bilibili.com/video/BV1km4y1k7CW?p=32&vd_source=9f6a57780f9760d9cdd025dbc388f3ba


一、概述    

        QTimer 是软件定时器,其父类是 QObjectQTimer 的主要功能是设置以毫秒为单位的定时周期,然后进行连续定时或单次定时。

        QElapsedTimer 用于快速计算两个事件的间隔时间,是软件计时器。QElapsedTimer 没有父类,其计时精度可以达到纳秒级。


二、 QTimer类

        QTimer 的父类是 QObject支持 Qt 的元对象系统。所以,QTimer 虽然不是一个界面组件类, 但是它也有属性、信号和槽

1. 主要的属性和接口函数

QTimer 类的主要属性

属性 属性值类型 功能
interval
int 定时周期,单位是毫秒
singleShot bool
定时器是否为单次定时,true 表示单次定时
timerType Qt::TimerType
定时器精度类型
active bool
只读属性,返回 true 表示定时器正在运行,也就是运行 start() 函数启动了定时器
remainingTime int
只读属性,到发生定时溢出的剩余时间,单位是毫秒。若定时器未启动,属性值
−1 ,若已经发生定时溢出,属性值为 0
timerType表示定时器的精度,
void QTimer::setTimerType(Qt::TimerType atype)
参数 atype 是枚举类型 Qt::TimerType,有以下几种枚举值,默认值是 Qt::CoarseTimer。
• Qt::PreciseTimer:精确定时器,精度尽量保持在毫秒级。
• Qt::CoarseTimer:粗糙定时器,定时误差尽量在定时周期值的 5%以内。
• Qt::VeryCoarseTimer:非常粗糙的定时器,精度保持在秒级。
QTimer 有几个公有槽函数用于启动和停止定时器,其函数原型定义如下:
void QTimer::start() //启动定时器
void QTimer::start(int msec) //启动定时器,并设置定时周期为 msec,单位是毫秒
void QTimer::stop() //停止定时器

2.timeout()信号

QTimer 只有一个 timeout() 信号,其原型定义如下:
         void QTimer::timeout()
要对定时溢出事件进行处理,需要编写一个槽函数与 timeout() 信号关联。

 3.静态函数singleShot()

        QTimer 有一个静态函数 singleShot() ,用于创建和启动单次定时器,并且将定时器的 timeout() 信号与指定的槽函数关联。这个函数有多种参数形式,其中一种函数原型定义如下:
void QTimer::singleShot(int msec, Qt::TimerType timerType, const QObject *receiver, const char *member)
其中,参数 msec 是定时周期,单位是毫秒;timerType 是定时器精度类型;receiver 是接收定时器 的 timeout()信号的对象;member 是与 timeout()信号关联的槽函数的指针

三、 QElapsedTimer类 

        QElapsedTimer 用于快速计算两个事件的间隔时间 它没有父类,不支持 Qt 的元对象系统 ,所以 只有接口函数
void start()                             //复位并启动计时器
qint64 elapsed()                    //返回流逝的时间,单位:毫秒
qint64 nsecsElapsed()         //返回流逝的时间,单位:纳秒
qint64 restart()                      //重新启动计时器

 四、代码示例

        详情请查看课本和视频

你可能感兴趣的:(Qt6,C++,开发指南——笔记,学习,qt)