定时器在编程中经常要用到,有必要学习一下,记记笔记!
Qt中定时器的使用有两种方法,一种是使用QObject类提供的定时器,还有一种就是使用QTimer类。
1、QObject中的定时器的使用,需要用到三个函数
int QObject::startTimer ( int interval ) ; // 开启定时器并设定间隔,返回定时器ID
void QObject::timerEvent ( QTimerEvent * event ); // 定时器到时处理函数
void QObject::killTimer ( int id ); // 关闭定时器
2、使用QTimer定时器类(可以使用信号与槽)
QTimer *timer = new QTimer(this); // 设置定时器
connect(timer, SIGNAL(timeout()), this, SLOT(onTimeout())); // 连接定时器到时槽函数
void QTimer::start ( int msec ); // 开启定时器并设定间隔
void QTimer::stop(); // 关闭定时器
关于定时器精度:
int QObject::startTimer(int interval, Qt::TimerType timerType = Qt::CoarseTimer);
void QTimer::setTimerType(Qt::TimerType atype);
Qt Assitant中的原文如下:
enum Qt::TimerType
The timer type indicates how accurate a timer can be.
本文福利,莬费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QT嵌入式开发,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击莬费领取↓↓
QTimerDisplay.h
#ifndef QTIMERDISPLAY_H
#define QTIMERDISPLAY_H
#include <QObject>
#include <QTimer>
#include <QTimerEvent>
#include <QDebug>
class QTimerDisplay : public QObject
{
Q_OBJECT
public:
explicit QTimerDisplay(QObject *parent = nullptr);
protected:
// ![0]
virtual void timerEvent(QTimerEvent *event);
// ![0]
signals:
public slots:
// ![1]
void onTimeout();
// ![1]
private:
// ![0]
int m_nTimerID;
// ![0]
// ![1]
QTimer *m_pTimer;
// ![1]
};
#endif // QTIMERDISPLAY_H
QTimerDisplay.cpp
#include "qtimerdisplay.h"
#define TIMER_TIMEOUT (2*1000)
QTimerDisplay::QTimerDisplay(QObject *parent) : QObject(parent)
{
// ![0]
m_nTimerID = startTimer(TIMER_TIMEOUT);
// ![0]
// ![1]
m_pTimer = new QTimer(this);
connect(m_pTimer, SIGNAL(timeout()), this, SLOT(onTimeout()));
m_pTimer->start(1000);
// ![1]
}
// ![0]
void QTimerDisplay::timerEvent(QTimerEvent *event)
{
if(event->timerId() == m_nTimerID)
{
qDebug() << "Timer ID:" << event->timerId();
}
}
// ![0]
// ![1]
void QTimerDisplay::onTimeout()
{
qDebug() << "Timer is out!";
}
// ![1]
本文福利,莬费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QT嵌入式开发,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击莬费领取↓↓