在代码开发的过程中,经常需要一段时间之后自动执行某些动作,这就需要用到定时器。这里给大家介绍Qt的定时器的使用方法。
方法一:使用QObject类提供的定时器,这里需要用到三个函数
第一个函数是开启定时器:
int startTimer(int interval, Qt::TimerType timerType = Qt::CoarseTimer);
第二个函数是重载timerEvent事件函数
virtual void timerEvent(QTimerEvent *event);
第三个函数是结束定时器:
void killTimer(int id);
然后定义一个超时处理函数,
void handleTimeout(); //超时处理函数
下面贴出实例代码:
头文件:
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QLineEdit>
#include <QGridLayout>
#include <QEvent>
#include <QTimerEvent>
#include <QObject>
#define TIMER_TIMEOUT (1000)
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
void handleTimeout(); //超时处理函数
virtual void timerEvent(QTimerEvent *event);
private:
Ui::Widget *ui;
int m_nTimerID;
int m_nCount;
QLineEdit *lineEdit;
QGridLayout *gmainLayout;
};
#endif // WIDGET_H
源文件:
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
lineEdit = new QLineEdit;
gmainLayout = new QGridLayout(this);
gmainLayout->addWidget(lineEdit);
m_nCount = 0;
m_nTimerID = this->startTimer(TIMER_TIMEOUT);
}
Widget::~Widget()
{
delete ui;
killTimer(m_nTimerID);
}
void Widget::timerEvent(QTimerEvent *event)
{
if(event->timerId() == m_nTimerID)
{
handleTimeout();
}
}
void Widget::handleTimeout()
{
lineEdit->setText(tr("Enter timeout processing function,%1").arg(m_nCount));
m_nCount++;
}