欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Qt学习笔记——定时器

程序员文章站 2022-03-11 15:27:13
定时器事件1.timerEventwidget.cpp文件#include "widget.h"#include "ui_widget.h"#includeWidget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget){ ui->setupUi(this); id1 = startTimer(1000);//间隔 单位毫秒 id2 = star...

定时器事件

1.timerEvent

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);
}
//启动定时器
void Widget::timerEvent(QTimerEvent *ev)
{
    if(ev->timerId() == id1)
   {
    static int num = 1;
    //label2每隔一秒+1
    ui->label_2->setText(QString::number(num++));
   }
    if(ev->timerId() == id2)
    {
    //label3每隔两秒+1
    static int num2 = 1;
    ui->label_3->setText(QString::number(num2++));
    }
}

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

startTimer相当于每隔1s执行一次timerEvent函数
因此需要吧变量num改成静态变量
startTimer的返回值是int类型,所以设定另个Int类的变量来区分两个定时器

(id1和id2已经在widget.h文件中声明)

2.定时器类

#include<QTimer>
QTimer * timer = new QTimer(this);
startTimer(500);
connect(timer,&QTimer::timeout,[=](){
	static int num = 1;
	ui->label_4->setText(QString::number(num++));
});

timeout:时间到了,num++

定时器的暂停和启动

 //点击暂停 实现停止定时器
    connect(ui->btn,&QPushButton::clicked,[=](){
       timer->stop();
       ui->btn->setText("启动");
       //暂停后点击启动 实现继续计时
       connect(ui->btn,&QPushButton::clicked,[=](){
           timer->start(500);
           ui->btn->setText("暂停");
       });
    });

本文地址:https://blog.csdn.net/weixin_45762143/article/details/108147131

相关标签: Qt