MyQTimer.h
#pragma once
#include <iostream>
#include <qtimer.h>
#include <functional>
using namespace std;
//typedef std::function<void(void)> Fun;
class MyQTimer : public QTimer
{
Q_OBJECT
public:
explicit MyQTimer(bool singleShot = false
, int msec = 1000, QObject *parent = Q_NULLPTR);
~MyQTimer();
void initTimer(bool singleShot = false, int msec = 1000);
//typedef std::function<void(void)> Fun;
template<class T>
void setTimerFun(T f)
{
connect(this, &QTimer::timeout, f);
}
Q_SLOT void TimerTimeOut();
};
MyQTimer.cpp
#include "MyQtimer.h"
MyQTimer::MyQTimer(bool singleShot, int msec, QObject *parent)
: QTimer(parent)
{
initTimer(singleShot, msec);
}
MyQTimer::~MyQTimer(){}
void MyQTimer::initTimer(bool singleShot, int msec)
{
this->setSingleShot(singleShot);
this->start(msec);
}
Q_SLOT void MyQTimer::TimerTimeOut()
{
//判断定时器是否运行
if (this->isActive())
{
//停止定时器
this->stop();
//执行定时器触发时需要处理的业务
}
}