当前位置: 首页 > article >正文

重写QObjiet虚函数timerEvent()启动定时器

重写QObjiet虚函数timerEvent()启动定时器是一个常见的方法,它允许在Qt应用程序中实现定时功能。下面是一个简单的例子,展示了如何重写timerEvent()并启动定时器:

首先,创建一个继承自QObject的类,并在该类中重写timerEvent()函数。在timerEvent()函数中,你可以编写定时器事件的处理逻辑。

#include <QObject>
#include <QTime>

class MyTimer : public QObject {
    Q_OBJECT

public:
    MyTimer(QObject *parent = nullptr) : QObject(parent) {
        // 启动定时器,每隔1000毫秒(1秒)触发一次
        m_timerId = startTimer(1000);
    }

protected:
    void timerEvent(QTimerEvent *event) override {
        if (event->timerId() == m_timerId) {
            // 在这里编写定时器的处理逻辑
            qDebug() << "Timer triggered at" << QTime::currentTime().toString("hh:mm:ss");
        }
    }

private:
    int m_timerId;
};

在这个例子中,MyTimer类继承了QObject,并重写了timerEvent()函数。在构造函数中,我们使用startTimer()函数启动了一个定时器,每隔1000毫秒(1秒)触发一次。在timerEvent()函数中,我们检查了触发的定时器ID,并编写了相应的处理逻辑。

你可以根据需要调整定时器的触发间隔和处理逻辑。记得在适当的位置(如析构函数中)使用killTimer()函数来停止定时器,以避免内存泄漏。

请注意,这个例子中使用了Qt的调试输出功能,因此需要在编译时启用Qt的调试信息输出,以便在控制台中看到定时器触发的消息。

#ifndef MYTIMER2_H
#define MYTIMER2_H

#include <QObject>


#include <QTime>
#include <QTimer>
#include <QTimerEvent>
#include <QDebug>


class MyTimer2 : public QObject
{
    Q_OBJECT
public:
    explicit MyTimer2(QObject *parent = nullptr);

protected:
    void timerEvent(QTimerEvent *event) override {
        if (event->timerId() == m_timerId) {
            // 在这里编写定时器的处理逻辑
            qDebug() << "Timer triggered at" << QTime::currentTime().toString("hh:mm:ss");
        }
    }

private:
    int m_timerId;

signals:

};

#endif // MYTIMER2_H

#include "mytimer2.h"

MyTimer2::MyTimer2(QObject *parent)
    : QObject{parent}
{
    // 启动定时器,每隔1000毫秒(1秒)触发一次
    m_timerId = startTimer(1000);

}


http://www.kler.cn/news/356019.html

相关文章:

  • ssm基于SSM框架的成绩管理系统的设计与实现+vue
  • 矩阵相关算法
  • 【基于数据分析-画图展示】
  • 【Unity - 屏幕截图】技术要点
  • Spring Boot框架的电影评论系统设计与实现
  • 多种方式实现安全帽佩戴检测
  • 上位机-简介
  • 与双指针的亲密接触:快与慢的浪漫交错
  • 细说网络安全五家龙头企业,你去过哪一家?
  • Linux 中,`tee` 和 `grep` 分别用于处理输出流[从标准输入读取数据,并将数据同时输出到标准输出和文件]和文本内容的过滤。
  • fmql之Linux Uart
  • 【C++刷题】力扣-#252-会议室
  • 【AI学习】Mamba学习(八):HiPPO通用框架定义和方法
  • JAVA学习-练习试用Java实现“选择排序”
  • 学生社会适应能力测试
  • 【最新华为OD机试E卷-支持在线评测】内存资源分配(100分)多语言题解-(Python/C/JavaScript/Java/Cpp)
  • WordPress+Nginx 安装教程
  • 越狱你的 iPhone 安全吗?
  • JMeter之mqtt-jmeter 插件介绍
  • 一个使用接口模式、工厂模式、模板方法模式的日志文件系统