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);
}
相关推荐
逼子格9 天前
【Proteus仿真】定时器控制系列仿真——秒表计数/数码管显示时间
数据库·单片机·嵌入式硬件·51单片机·proteus·定时器·硬件工程师
Rysxt_11 天前
开源定时器教程:Quartz与XXL-JOB全面对比与实践
开源·定时器
眰恦ゞLYF11 天前
51单片机:中断、定时器与PWM整合手册
定时器·中断系统
sheepwjl12 天前
《嵌入式硬件(二):中断》
定时器·pwm·中断·按键·中断寄存器
逼子格12 天前
【Protues仿真】基于AT89C52单片机的温湿度测量
单片机·嵌入式硬件·定时器·硬件工程师·dht11·温湿度传感器·at89c52
逼子格14 天前
【Proteus仿真】8*8LED点阵控制系列仿真——循环显示数字/按键控制显示图案
单片机·嵌入式硬件·proteus·嵌入式·定时器·硬件工程师·led点阵
逼子格21 天前
【Protues仿真】定时器
单片机·嵌入式硬件·51单片机·定时器·硬件工程师·硬件工程师真题·at89c52
四谎真好看1 个月前
第六章第二节 定时器定时中断 & 定时器外部时钟
stm32·单片机·嵌入式硬件·定时器·timer
DIY机器人工房2 个月前
【科普】在STM32中有哪些定时器?
c语言·嵌入式·定时器·diy机器人工房
憧憬一下3 个月前
FreeRTOS定时器
嵌入式·freertos·定时器