Qt學習筆記——QTimer計時器的基本使用
阿新 • • 發佈:2018-12-10
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;
}