Qt定时器

简介: Qt定时器

一、实现目标

实现三个定时器,第一个1s增加一个数,第二个2s增加一个数,第三个0.5s增加一个数,按钮控制第三个定时器,暂停和继续根据定时器状态自动切换;

二、代码实现

widght.h

#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 timer1;//定时器1的唯一标识
    int timer2;//定时器2的唯一标识
 
private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

 widght.cpp

#include "widget.h"
#include "ui_widget.h"
#include<QTimer> //定时器的类
 
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
 
    //启动定时器 间隔时间:毫秒
    timer1=startTimer(1000);
    timer2=startTimer(2002);
 
    //定时器第二种方式
    QTimer * timer=new QTimer(this);
    //启动定时器
    timer->start(500);
    connect(timer,&QTimer::timeout,[=](){
        static int num=1;
        ui->label_time3->setText(QString::number(num++));
    });
 
    //点击暂停按钮,停止定时器
    connect(ui->btn,&QPushButton::clicked,[=](){
        //获取定时器状态
        int isActive=  timer->isActive();
        if(isActive){
            timer->stop();
            ui->btn->setText("继续");
        }else{
            //恢复启动
            timer->start();
            ui->btn->setText("暂停");
        }
 
    });
}
void Widget::timerEvent(QTimerEvent * ev){
    int timerId=ev->timerId();
    //定义一次
    static  int num=1;
    //每隔1秒+1
    if(timerId==timer1){
        ui->label_time->setText(QString::number(num++));
    }
    static  int num2=1;
    //每隔2秒+1
    if(timerId==timer2){
        ui->label_time2->setText(QString::number(num2++));
    }
}
Widget::~Widget()
{
    delete ui;
}
 


结论:推荐使用第二种,更灵活方便

相关文章
|
4月前
【qt】日历和定时器
【qt】日历和定时器
49 0
|
3月前
|
API
【Qt】Qt定时器类QTimer
【Qt】Qt定时器类QTimer
|
4月前
|
Linux 图形学
深入理解Qt定时器:QTimer的魅力与挑战(一)
深入理解Qt定时器:QTimer的魅力与挑战
2925 0
|
4月前
|
C++
QT定时器的使用timer示例
QT定时器的使用timer示例
|
4月前
|
安全 API 开发者
深入理解Qt定时器:QTimer的魅力与挑战(二)
深入理解Qt定时器:QTimer的魅力与挑战
373 0
|
4月前
|
编解码 算法 Unix
【Qt 应用开发 】QT 三种定时器的介绍 以及 QTimer startTimer/Timerevent QBasicTimer 之间的区别
【Qt 应用开发 】QT 三种定时器的介绍 以及 QTimer startTimer/Timerevent QBasicTimer 之间的区别
663 0
|
11月前
|
数据格式
嵌入式 QT 定时器与计时器
嵌入式 QT 定时器与计时器
Qt | 定时器的使用 QTimer
学习使用Qt定时器的用法。
906 0
Qt | 定时器实现动画效果时卡住了
Qt通过使用定时器定时切换图片实现动画效果遇到的卡顿问题。
990 0