Qt定时器的使用

在代码开发的过程中,经常需要一段时间之后自动执行某些动作,这就需要用到定时器。这里给大家介绍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++;
}
发布了33 篇原创文章 · 获赞 5 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qiukapi/article/details/88169239