QT Object定时器使用

cpp 复制代码
#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);

    // 需要对timerEvent函数进行重写
    virtual void timerEvent(QTimerEvent* event);

    ~Widget();

private slots:
    void on_startTimer_clicked();



    void on_killTimer_clicked();

private:
    Ui::Widget *ui;
    int eventId; // 定时器返回的唯一id,用于区分不同定时器
    int pictureId=1; // 不同图片的编号
};
#endif // WIDGET_H

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

#define TIME_OUT 1 * 1000

/**
QObject中有定时器,可以直接进行使用startTimer和killTimer操作
但需要对timerEvent进行重新定义,以自己的方式处理定时器
*/
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    QString path("D:\\workspace\\qt\\Timer\\");
    path += QString::number(this->pictureId)+".jpg";

    QPixmap pix(path);
    ui->label->setPixmap(pix);
}

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


void Widget::on_startTimer_clicked()
{
    // 开启定时器
    // QObject中有定时器,直接使用,Widget->QWidget->QObject
    this->eventId = this->startTimer(TIME_OUT);

}


void Widget::timerEvent(QTimerEvent* event) {

    // 获取timerId是否为开启定时器所操作的
    if (event->timerId() == this->eventId) {
        QString path("D:\\workspace\\qt\\Timer\\");
        path += QString::number(this->pictureId)+".jpg";

        QPixmap pix(path);
        ui->label->setPixmap(pix);
		this->pictureId++;

        if (this->pictureId == 5) {
            this->pictureId = 1;
        }
    }
}

void Widget::on_killTimer_clicked()
{
    this->killTimer(this->eventId);
}
相关推荐
阿钱真强道10 天前
课时04 嵌入式技术应用设计实训 | 定时器:定时中断
tim·定时器·volatile·定时中断·nvic·stm32f103·计秒表
阿钱真强道19 天前
18 嵌入式操作系统 | uloop 定时器:周期任务与网络上报
c语言·定时器·周期任务·uloop
晊晌_h20 天前
IMX6ULL裸机开发:定时器(GPT/EPIT)与UART串口
arm·定时器·arm裸机开发
AAA代码批发商1 个月前
Days 50 51 单片机与 i.MX6ULL 定时器对比:Timer、EPIT、GPT 原理与实验
51单片机·定时器·imx6ull·裸机开发
捷瑞电子工坊1 个月前
蓝桥杯嵌入式STM32G431定时器入门:从原理到CubeMX配置(LL库)
cubemx·定时器·定时中断·led闪烁·蓝桥杯嵌入式·stm32g431·ll库
阿钱真强道2 个月前
24 极物科技 | DALI协议栈 - 定时器与中断系统
定时器·曼彻斯特编码·极物·极物智能·极物科技·dali协议栈·智慧照明
jufeng13072 个月前
STM32F103 定时器输入捕获实战:测频测周、编码器测速、红外解码全流程拆解
stm32·输入捕获·定时器·编码器
啦啦啦啦啦zzzz2 个月前
时间轮定时器
linux·服务器·网络·c++·定时器
保安大队王队长3 个月前
定时器知识
定时器
Dlrb12113 个月前
ARM---IMX6ULL定时器详解与应用:EPIT与GPT定时器,高精度延时函数
arm开发·gpt·arm·定时器·epit·高精度延时