qt 要开启多个定时器

//背景时12个帕尔贴 不要12个温度去曲线,每一个类似下图:

b27.jpg

该类在线程启动12定时器计时,并停止,第13个定时器 定时读取温度
//头文件

ifndef THREADTIMER_H

define THREADTIMER_H

include <QObject>

define MAX_REAGENT (12) //PCR最多八连排数量

class QThread;
class QTimer;

class ThreadTimer : public QObject
{
Q_OBJECT
public:
ThreadTimer();
~ThreadTimer();
public slots:
//index八连排索引, sec是秒 开启定时器
void StartTimer(int index, int sec );
void StartGetTem( int timeout );
void StopGetTem( );
private:
void GetTem();
signals:
void TimeOut(int index);
private:
virtual void timerEvent(QTimerEvent event);
private:
QTimer * m_pTimer;
QThread
m_pCurrThread;
int m_nTimer[MAX_REAGENT];
};

endif // THREADTIMER_H

//源文件

include "threadtimer.h"

include <QThread>

include <QTimerEvent>

include <QDebug>

include <QTimer>

ThreadTimer::ThreadTimer()
{
memset(m_nTimer,0,sizeof(m_nTimer));
m_pCurrThread = new QThread;
m_pTimer = new QTimer(this);
connect(m_pTimer, &QTimer::timeout, this, &ThreadTimer::GetTem);
this->moveToThread(m_pCurrThread);
m_pCurrThread->start();
}

ThreadTimer::~ThreadTimer()
{
if( nullptr != m_pCurrThread)
{
m_pCurrThread->quit();
m_pCurrThread->wait();
m_pCurrThread->deleteLater();
}
}

void ThreadTimer::StartTimer(int index, int timeout )
{
m_nTimer[index] = startTimer( timeout* 1000);
}

void ThreadTimer::StartGetTem( int timeout )
{
m_pTimer->start( timeout*1000 );
}

void ThreadTimer::StopGetTem( )
{
m_pTimer->stop();
}

//计时任务
void ThreadTimer::timerEvent(QTimerEvent *event)
{
int timerID = event->timerId();
for( int i=0;i< MAX_REAGENT;i++)
{
if( timerID == m_nTimer[i])
{
m_nTimer[i] = -1;
emit TimeOut(i);
break;
}
}
qDebug()<<"ThreadTimer::timerEvent "<<QThread::currentThreadId()<<"\n";
killTimer( timerID );
}

//获取温度
void ThreadTimer::GetTem()
{

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Qt定时器有两种方式。 第一种方式 如果此类继承于QObject,可以直接调用startTimer函数,函数原型如...
    Emilio_阅读 4,997评论 0 0
  • 布局管理器 QLayout是布局管理器的基类,是一个抽象基类。最常用的QLayout的几个子类,分别是QBoxLa...
    爱笑的人26阅读 456评论 0 2
  • 16宿命:用概率思维提高你的胜算 以前的我是风险厌恶者,不喜欢去冒险,但是人生放弃了冒险,也就放弃了无数的可能。 ...
    yichen大刀阅读 6,123评论 0 4
  • 公元:2019年11月28日19时42分农历:二零一九年 十一月 初三日 戌时干支:己亥乙亥己巳甲戌当月节气:立冬...
    石放阅读 6,943评论 0 2