//背景時(shí)12個(gè)帕爾貼 不要12個(gè)溫度去曲線回季,每一個(gè)類似下圖:
該類在線程啟動(dòng)12定時(shí)器計(jì)時(shí)家制,并停止,第13個(gè)定時(shí)器 定時(shí)讀取溫度
//頭文件
ifndef THREADTIMER_H
define THREADTIMER_H
include <QObject>
define MAX_REAGENT (12) //PCR最多八連排數(shù)量
class QThread;
class QTimer;
class ThreadTimer : public QObject
{
Q_OBJECT
public:
ThreadTimer();
~ThreadTimer();
public slots:
//index八連排索引泡一, sec是秒 開啟定時(shí)器
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();
}
//計(jì)時(shí)任務(wù)
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()
{
}