QTimer(重復和單發計時器)
應用QTimer時,先創建一個QTimer類,利用connect將timeout()與對應槽函數連接,在調用start()函數設置定時器時間間隔,每經過設置時間后,定時器會發出一個timeout(),
相應的槽函數就會被觸發,直到調用stop()函數停止。
舉例:
QTimer *timer = new QTimer(this);
connect(timer,SIGNAL(timeout()),this,SLOT(function));
timer->start(1000);
也可以不用定義QTimer類,直接調用QTimer的成員函數singleShot(),定時器只執行一次
QTimer::singleShot(200,this,SLOT(updateCaption()));//200/1000秒后啟動功能函數
-----------------------------------------------------------------------------
2.成員函數
1)void QTimer::singleShot(int msec,Qt::TimerType timeType,const QObject *receiver,const *member)//在規定的時間間隔調用函數
舉例:
#include<QApplication>
#include<QTimer>
int main(int argc,char *argv[])
{
QApplication app(argc,argv);
QTimer::singleShot(10000,&app,SLOT(quit()));
........
return app.exec();
}//功能表述,在10分鍾后,應用程序將關閉
2)void QTimer::start(int msec);
啟動或者重啟服務器,msec為時間間隔,沒有參數時,時間間隔為0.
3)void QTimer::stop();
停止計時器
4)void QTimer::timeout();
當定時器時間到時,信號被發射。
5)int QTimer::timerID()
返回正在運行的計時器的ID號,否則返回為-1
-----------------------------------------------------------------------------
注意:
QTimer的精確度依賴於底下的操作系統和硬件,絕大多數平台支持20毫秒的精確度,一些平台可以提供更高的。如果Qt不能傳送定時器觸發所要求的數量,它將會默默地拋棄一些。
另一個使用QTimer的方法是為你的對象調用QObject::startTimer()和在你的類中(當然必須繼承QObect)重新實現QObject::timerEvent()事件處理器。缺點是timerEvent()事件 處理器不支持像單觸發器或信號那樣的高級水平。
一些操作系統限制可能用到的定時器的數量,Qt會盡力在限制范圍內工作。
-----------------------------------------------------------------------------
