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总结


相关文章
|
1月前
|
存储 开发框架 开发者
QT C++焦点事件:多角度解析实用技巧与方法
QT C++焦点事件:多角度解析实用技巧与方法
156 0
|
2月前
|
API
QT基础入门——Qt事件(五)
QT基础入门——Qt事件(五)
54 0
QT基础入门——Qt事件(五)
|
5月前
|
存储 Cloud Native 程序员
C++ Qt 事件(event)
C++ Qt 事件(event)
|
5月前
24 QT - 事件
24 QT - 事件
21 0
|
1月前
|
测试技术 数据库 C++
Qt C++拖放事件探索之旅:多方法深入解析
Qt C++拖放事件探索之旅:多方法深入解析
120 1
|
3月前
Qt6学习笔记十二(事件分发器、事件过滤器)
Qt6学习笔记十二(事件分发器、事件过滤器)
26 0
|
3月前
|
C++
Qt6学习笔记十(鼠标事件、事件分发器)
Qt6学习笔记十(鼠标事件、事件分发器)
34 0
|
4月前
[Qt5] 鼠标响应事件和计时器事件
[Qt5] 鼠标响应事件和计时器事件
26 0
|
5月前
《QT从基础到进阶·二十三》弹窗提示框QMessageBox和QCloseEvent事件
《QT从基础到进阶·二十三》弹窗提示框QMessageBox和QCloseEvent事件
80 0
|
5月前
《QT从基础到进阶·十四》QPoint,QPen,QPainter,QFont,焦点事件使用
《QT从基础到进阶·十四》QPoint,QPen,QPainter,QFont,焦点事件使用
59 0

热门文章

最新文章

推荐镜像

更多