第四章 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定时周期,单位是毫秒
singleShotbool
定时器是否为单次定时,true 表示单次定时
timerTypeQt::TimerType
定时器精度类型
active bool
只读属性,返回 true 表示定时器正在运行,也就是运行 start() 函数启动了定时器
remainingTimeint
只读属性,到发生定时溢出的剩余时间,单位是毫秒。若定时器未启动,属性值
−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()                      //重新启动计时器

 四、代码示例

        详情请查看课本和视频

  • 25
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值