1. 程式人生 > >Qt學習筆記——QTimer計時器的基本使用

Qt學習筆記——QTimer計時器的基本使用

QTimer <-- 計時器

重複觸發 :

    QTimer *timer = new QTimer(this); //this 為parent類, 表示當前視窗

	connect(timer, SIGNAL(timeout()), this, SLOT()); // SLOT填入一個槽函式

	timer->start(1000); // 1000毫秒, 等於 1 秒

 以上意義為每隔 1 秒觸發一次槽函式

單次觸發 : 

QTimer::singleShot(1000, this, SLOT());  // SLOT槽填入一個槽函式

以上意義為一秒後觸發,僅觸發一次

QTimer中所常用函式

函式:

void setTimerType(Qt::TimerType atype); <-- 設定tiemr的時間精度型別

Qt::PreciseTimer <-- 精確計時器試圖保持毫秒精度。

Qt::CoarseTimer <-- 粗計時器試圖保持精度在預期間隔的5%以內。

Qt::VeryCoarseTimer <-- 非常粗糙的計時器只保持完全的第二精度。

void stop(); <-- 可以用來停止觸發,可以再次呼叫Start再次開始觸發

付:

QObject類中也有一個可進行計時的函式

int QObject::startTimer(

int interval, Qt::TimerType timerType = Qt::CoarseTimer);

需要寫一個繼承了QObject的類,重寫 void timerEvent(QTimerEvent *event); 函式

使用該定時器的方法,每個Timer都有對應的timerid,所以,需要啟動定時器,再通過timerid來對定時器進行繫結或者操作。

啟動計時器的方法: 呼叫int startTimer(int interval, Qt::TimerType timeType = Qt::CoarseTimer);

第一個形參需傳入一個int型別的實參,代表多少毫秒,第二個是時間精度型別,上面有描述,返回值為timerid

例如:

startTimer(1000); <-- 1秒呼叫一次,啟動了第一個計時器

startTimer(2000); <-- 2秒呼叫一次,啟動了第二個計時器

timerEvent函式表示計時器呼叫時做的事情,每完成一次計時呼叫一次函式

void timerEvent(QTimerEvent *event){ // event 表示當前執行的定時器


if(event->timerid == 1){

    qDebug() << "1號計時器執行一次";

}

    qDebug() << "當前TimerID 為" << event->timerid;

}