Qt 定時器


1.定時器

Qt 中的定時器類是QTimer,。QTimer不是一個可見的界面組件。

QTimer繼承自QObject類,其主要屬性是interval,該屬性設置定時中斷的周期,單位為毫秒;QTimer主要的信號是timeout(),在定時中斷時發射此信號。

在程序設計中,如果需要高精度定時器,一般不建議采用Qt的QTimer類,這是因為QTimer定時器優先級較低,其准確性不高。

目前Qt中的主要采用2種定時器調用方式,一個是QTimer類,另一個是QObject類。

2.定時器類型

常量 描述
Qt::PreciseTimer 0 精確的定時器,盡量保持毫秒精度
Qt::CoarseTimer 1 粗略的定時器,盡量保持精度在所需的時間間隔5%范圍內
Qt::VeryCoarseTimer 2 很粗略的定時器,只保留完整的第二精度

QTimer和QObject的定時器事件默認的定時器類型是CoarseTimer。

3.使用方法

1.QTimer

QTimer * timer = new QTimer(this);
connect(timer,SIGNAL(timeout(),this,SLOT(timerSlot()));
timer->setTimerType(Qt::PreciseTimer);//如果不設置,默認為CoarseTimer類型
timer->start();

結束時: timer->stop();

 

2.QObject

timerID = this->startTimer(10000);
void DemoTimer::timerEvent(QTimerEvent *event)//事件響應函數,當定時器超時后,會進入該函數
{
   if(event->timerId() == timerID)
   {
        handleTimeout();      
   }    
}

void DemoTimer::handleTimeout()
{
   if(timerID)
   {
       killTimer(timerID);
       timerID = 0;
   }  
}

其中,int QObject::startTimer(int interval) 為開啟定時器函數,參數為毫秒級,當開啟成功后會返回這個定時器的ID,並且每隔interval時間后會進入timerEvent函數,直到定時器被殺死。

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM