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++;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值