Qt6学习笔记十一(计时器事件)

简介: Qt6学习笔记十一(计时器事件)

一、定时器1

可以在帮助文档中找到计时器事件

需求:创建两个label,使得,上面一个label,每间隔1s就+1,下面一个label,每隔2s就+1

在widget.h中

//重写定时器的事件
    void timerEvent(QTimerEvent *e);
    int id1;//定时器1的唯一标识
    int id2;//定时器2的唯一标识

widget.cpp

#include "widget.h"
#include "./ui_widget.h"
#include<QTimerEvent>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //启动定时器
    id1 = startTimer(1000);  //参数1:间隔(单位毫秒)
    id2 = startTimer(2000);
}
Widget::~Widget()
{
    delete ui;
}
void Widget::timerEvent(QTimerEvent *e){
    if(e->timerId()==id1){
        //int num=1;  //如果不是静态变量,这个局部变量导致最终label显示的文本都是1
        static int num=1; //变量初始化调用一次,后面不会再调用。单例模式就是用这个来的
        //设置文本(每隔1秒+1)
        ui->label_2->setText(QString::number(num++));//将int转为QString
    }
    else if(e->timerId()==id2){
        //设置文本(每隔2秒+1)
        static int num2=1;
        ui->label_3->setText(QString::number(num2++));//将int转为QString
    }
}

定时器1:总结

  • 利用事件 void timerEvent(QTimerEvent *ev)
  • 启动定时器 startTimer(1000) 毫秒单位
  • startTimer 的返回值是定时器的唯一标示 可以和 ev->timerId 做比较

二、定时器2

推荐使用这种定时器的方式

//定时器第二种方式
    QTimer *timer = new QTimer(this);
    //启动定时器
    timer->start(500);//500毫秒
    connect(timer,&QTimer::timeout,[=](){
        static int num=1;
        //label4 每隔0.5秒+1
        ui->label_4->setText(QString::number(num++));
    });

另外还可以来一个按钮(实现计时暂停的功能)

//点击暂停按钮  实现停止定时器
    connect(ui->btn,&QPushButton::clicked,[=](){
        timer->stop();
    });

定时器2总结


相关文章
|
开发者
Qt异步实现事件的定时执行 - QTimer和QThread的联合使用
通过将QTimer和QThread结合使用,Qt开发者可以实现高效的异步定时任务执行。这种方法不仅可以提升应用程序的响应能力,还可以在复杂的多线程环境中保持代码的简洁和可维护性。希望本文的详细介绍和示例代码能够帮助您更好地理解和应用这一技术。
1183 14
|
存储 Windows
(13) Qt事件系统(two)
文章详细介绍了Qt事件系统,包括事件分发、自定义事件、事件传播机制、事件过滤以及事件与信号的区别。
939 3
(13) Qt事件系统(two)
【Qt 学习笔记】Qt窗口 | 标准对话框 | 消息对话框QMessageBox
【Qt 学习笔记】Qt窗口 | 标准对话框 | 消息对话框QMessageBox
2680 4
【Qt 学习笔记】Qt窗口 | 标准对话框 | 消息对话框QMessageBox
|
编解码 程序员
(12)Qt事件系统(one)
本文详细介绍了Qt事件系统,包括各种系统事件、鼠标事件、键盘事件、定时器等的处理方法和示例代码。
675 0
(12)Qt事件系统(one)
|
开发者
【Qt 学习笔记】Qt系统相关 | Qt事件 | 事件的介绍及基本概念
【Qt 学习笔记】Qt系统相关 | Qt事件 | 事件的介绍及基本概念
716 4
【Qt 学习笔记】Qt窗口 | 标准对话框 | 文件对话框QFileDialog
【Qt 学习笔记】Qt窗口 | 标准对话框 | 文件对话框QFileDialog
4541 4
|
数据安全/隐私保护
【Qt 学习笔记】Qt窗口 | 对话框 | 模态与非模态对话框的创建
【Qt 学习笔记】Qt窗口 | 对话框 | 模态与非模态对话框的创建
1522 4
|
搜索推荐 C++
【Qt 学习笔记】Qt窗口 | 对话框 | 创建自定义对话框
【Qt 学习笔记】Qt窗口 | 对话框 | 创建自定义对话框
997 4
【Qt 学习笔记】Qt窗口 | 标准对话框 | 输入对话框QInputDialog
【Qt 学习笔记】Qt窗口 | 标准对话框 | 输入对话框QInputDialog
1793 3
|
数据可视化
【Qt 学习笔记】Qt窗口 | 标准对话框 | 字体对话框QFontDialog
【Qt 学习笔记】Qt窗口 | 标准对话框 | 字体对话框QFontDialog
780 3