Qt | 定时器的使用 QTimer

简介: 学习使用Qt定时器的用法。

在Qt中使用定时器一般有三种方式:

一、直接使用QObject类提供的定时器。

1.在需要开启定时器的地方直接调用startTimer();

该函数的声明为:int startTimer(int interval, Qt::TimerType timerType = Qt::CoarseTimer);

该函数开启一个定时器,返回值是定时器的编号。

参数一为时间间隔,单位毫秒;

参数二为定时器的精确度:

Qt::PreciseTimer(精确的定时器,尽量保持毫秒精度,试图保持精确度在1毫秒);

Qt::CoarseTimer(粗略的定时器,尽量保持精度在所需的时间间隔5%范围内);

Qt::VeryCoarseTimer(很粗略的定时器,只保留完整的第二精度,大约为500毫秒);

2.重载void QObject::timerEvent ( QTimerEvent * event );

当定时器溢出时,会自动响应timerEvent()函数。

在timerEvent()函数中,通过event->timerId()来确定是哪个定时器触发的;

3.在需要关闭定时器的地方调用killTimer();

该函数的声明为: void killTimer(int Id);

该函数关闭一个定时器,参数为定时器的编号。

二、使用QTimer类。

1.用new的方式创建一个QTimer对象。

QTimer *timer = new QTimer(this);

2.将定时器的溢出信号连接到自定义的槽函数。

connect(timer, &QTimer::timeout, this, &Myself::update);

3.启动定时器。

timer->start(1000);

函数原型为:void start(int msec);参数为定时器时间间隔,单位毫秒。

也可以调用timer->setInterval(1000);设置定时器时间间隔,然后调用timer->start();开启定时器。

4.停止定时器。

timer->stop();

三、仅调用一次溢出的定时器。

QTimer::singleShot(1000, this, SLOT(OnSendBreath()));

函数原型有两个:

1.static void singleShot(int msec, const QObject *receiver, const char *member);

参数一为时间间隔,单位毫秒;参数二为接收溢出信号的对象;参数三为溢出信号的槽函数;

2.static void singleShot(int msec, Qt::TimerType timerType, const QObject *receiver, const char *member);

参数一为时间间隔,单位毫秒;参数二为定时器的精确度(同上文);参数三为接收溢出信号的对象;参数四为溢出信号的槽函数。

另:

都可以用到的一些函数:

1.  判断定时器是否正在运行:bool QTimer::isActive () const

2.  改变定时器的时间间隔:void QTimer::changeInterval ( int msec )

如果这个定时器正在运行,他将被停止并且重新开始,否则将会被开始。

目录
相关文章
|
7月前
【qt】日历和定时器
【qt】日历和定时器
80 0
|
6月前
Qt定时器
Qt定时器
|
6月前
|
API
【Qt】Qt定时器类QTimer
【Qt】Qt定时器类QTimer
|
7月前
|
Linux 图形学
深入理解Qt定时器:QTimer的魅力与挑战(一)
深入理解Qt定时器:QTimer的魅力与挑战
4373 0
|
7月前
|
C++
QT定时器的使用timer示例
QT定时器的使用timer示例
|
7月前
|
安全 API 开发者
深入理解Qt定时器:QTimer的魅力与挑战(二)
深入理解Qt定时器:QTimer的魅力与挑战
485 0
|
7月前
|
安全
深入理解Qt多线程编程:QThread、QTimer与QAudioOutput的内在联系__Qt 事件循环(三)
深入理解Qt多线程编程:QThread、QTimer与QAudioOutput的内在联系__Qt 事件循环
204 0
|
7月前
|
存储 安全 程序员
深入理解Qt多线程编程:QThread、QTimer与QAudioOutput的内在联系__Qt 事件循环(二)
深入理解Qt多线程编程:QThread、QTimer与QAudioOutput的内在联系__Qt 事件循环
849 0
|
7月前
|
安全 测试技术 C++
深入理解Qt多线程编程:QThread、QTimer与QAudioOutput的内在联系__Qt 事件循环(一)
深入理解Qt多线程编程:QThread、QTimer与QAudioOutput的内在联系__Qt 事件循环
475 0
|
7月前
|
编解码 算法 Unix
【Qt 应用开发 】QT 三种定时器的介绍 以及 QTimer startTimer/Timerevent QBasicTimer 之间的区别
【Qt 应用开发 】QT 三种定时器的介绍 以及 QTimer startTimer/Timerevent QBasicTimer 之间的区别
1288 0