QT学习(6)——QT中的定时器事件,两种实现方式;事件的分发event,事件过滤器

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

引出

QT学习(6)——QT中的定时器事件,两种实现方式;事件的分发event,事件过滤器

在这里插入图片描述


定时器事件

QTimerEvent

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

QT_BEGIN_NAMESPACE
namespace Ui {
    class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
   
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

    // 重写定时器事件
    void timerEvent(QTimerEvent *);

    int id1; // 定时器1的唯一标识
    int id2; // 定时器2的唯一标识

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如何定义多个定义器事件

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
   
    ui->setupUi(this);
    // 启动定时器
    // 参数1 间隔 单位 毫秒
    id1 = startTimer(1000);

    id2 = startTimer(2000);
}

void Widget::timerEvent(QTimerEvent * ev)
{
   
    if(ev->timerId()==id1){
   
        static int num =1;
        // label1 每间隔1秒
        ui->label_2->setText(QString::number(num++));
    }

    // label2 每间隔2s
    if(ev->timerId()==id2){
   
        static int num2 = 1;
        ui->label_3->setText(QString::number(num2++));
    }


    // label3 每间隔3s

}


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

QTimer

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

定时器实现的另一种方式:实例化定时器QTimer 然后加到对象树上

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

进行定时信号的发送和处理

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

#include "widget.h"
#include "ui_widget.h"
#include <QTimer> // 定时器的类

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
   
    ui->setupUi(this);
    // 启动定时器
    // 参数1 间隔 单位 毫秒
    id1 = startTimer(1000);
    id2 = startTimer(2000);

    // 定时器的第二种方式,实例化,加到对象树上
    QTimer *timer = new QTimer(this);
    //  启动定时器
    timer->start(500); // 每隔500ms

    connect(timer,&QTimer::timeout,
            [=](){
   
        static int num = 1;
        ui->label_4->setText(QString::number(num++));
    });

    // 点击暂停按钮,停止定时器
    connect(ui->btnStop,&QPushButton::clicked,
            [=](){
   
        timer->stop();
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Arya's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值