使用QTimer定时器类
1、 首先创建一个定时器类的对象
QTimer *timer = new QTimer(this);
2、 timer 超时后会发出timeout()信号,所以在创建好定时器对象后给其建立信号与槽
connect(timer, SIGNAL(timeout()), this, SLOT(onTimeout()));
3、 在需要开启定时器的地方调用void QTimer::start ( int msec );
这个start函数参数也是毫秒级别;
timer->start(msec );
4、 在自己的超时槽函数里面做超时处理。
以下是QTimer定时器类具体使用简单例子:
#ifndef _MYTIMER_H
#define _MYTIMER_H
#include
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
#include "mytimer.h"
#include
#include
#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();
}
}