QTimer *timer = new QTimer(this);//创建一个定时器类的对象
//信号槽:timer 超时后会发出timeout()信号
connect(timer, SIGNAL(timeout()), this, SLOT(onTimeout()));
3、在需要开启定时器的地方调用void QTimer::start ( int msec );
这个start函数参数也是毫秒级别;
timer->start(msec ); //这一步与下面三步作用应该相同
timer.SetInterval(500); //设置定时周期(毫秒级)
timer.SetSingleShot(flase); //设置单次触发还是连续定时(默认为flase-连续触发)
timer.start(); //定时开始
4、 在自己的超时槽函数里面做超时处理。
以下是QTimer定时器类具体使用简单例子:
mytimer.h
#ifndef _MYTIMER_H
#define _MYTIMER_H
#include <QObject>
class QTimer;
class MyTimer : public QObject
{
Q_OBJECT
public:
MyTimer(QObject* parent = NULL);
~MyTimer();
public slots:
void handleTimeout(); //超时处理函数
private:
QTimer *m_pTimer;
};
#endif //_MYTIMER_H
mytimer.cpp
#include "mytimer.h"
#include<QDebug>
#include <QTimer>
#define TIMER_TIMEOUT (5*1000)
MyTimer::MyTimer(QObject *parent)
:QObject(parent)
{
m_pTimer = new QTimer(this);
connect(m_pTimer, SIGNAL(timeout()), this, SLOT(handleTimeout()));
m_pTimer->start(TIMER_TIMEOUT);
}
MyTimer::~MyTimer()
{
}
void MyTimer::handleTimeout()
{
qDebug()<<"Enter timeout processing function\n";
if(m_pTimer->isActive()){
m_pTimer->stop();
}
}