重写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);
}