我的QT学习笔记-02-QTimerEvent类定时器

    QTimerEvent类用来描述一个定时器。对于一个QObject类的子类,只需要使用int QObject::startTimer(int interval)函数来开启一个定时器,这个函数需要输入一个以毫秒为单位的整数作为参数来表示设定的时间,它返回一个整形标号来表示这个定时器。当定时器溢出时就可以在tImerEvent函数中获取改定时器的编号来进行相关的操作。

新建Qt Gui应用,将项目名称改为myTimerEvent,基类选择为QWidget,然后类名保持Widget不变。项目工程如下所示:


各个文件下的代码如下所示:

widget.h代码如下:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT
    
public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();
    
protected:
    void timerEvent(QTimerEvent *event);
private:
    Ui::Widget *ui;
    int id1,id2,id3;
};

#endif // WIDGET_H
main.cpp如下:

#include "widget.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();
}
widget.cpp:如下
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    id1 = startTimer(1000);
    id2 = startTimer(2000);
    id3 = startTimer(3000);
}

Widget::~Widget()
{
    delete ui;
}

void Widget::timerEvent(QTimerEvent *event)
{
    // 判断是哪个定时器
    if(event->timerId() == id1){
        qDebug() << "timer1";
    }
    if(event->timerId() == 2){
        qDebug() << "timer2";
    }
    if (event->timerId() == id3){
        qDebug() << "timer3";
        qDebug() << "id1="<< id1;
        qDebug() << "id2="<< id2;
        qDebug() << "id3="<< id3;
        //我们观察startTimer()函数返回的值
    }
}
编译之后应用程序输出如下:


可以看出:

1>startTimer()函数返回的是整形数值。
2><pre name="code" class="html">void timerEvent(QTimerEvent *event);函数为中断处理函数,可以根据那个定时器执行响应的操作。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值