QTimer

QTimer

QTimer提供了定時器信號和單觸發定時器。它在內部使用定時器事件來提供更通用的定時器。QTimer很容易使用:創建一個QTimer,使用start()來開始並且把它的timeout()連線到適當的槽。當這段時間過去了,它將會發射timeout()信號。注意當QTimer的父對象被銷毀時,它也會被自動銷毀。

簡介,成員函式文檔,QTimer::QTimer,QTimer::~QTimer (),void QTimer::singleShot,void QTimer::stop (),

簡介

QTimer類提供了定時器信號和單觸發定時器。
它在內部使用定時器事件來提供更通用的定時器。QTimer很容易使用:創建一個QTimer,使用start()來開始並且把它的timeout()連線到適當的槽。當這段時間過去了,它將會發射timeout()信號。
注意當QTimer的父對象被銷毀時,它也會被自動銷毀。
QTimer *timer = new QTimer( myObject );connect( timer, SIGNAL(timeout()), myObject, SLOT(timerDone()) ); timer->start( 2000, TRUE ); // 2秒單觸發定時器
你也可以使用靜態的singleShot()函式來創建單觸發定時器。
作為一個特殊情況,一旦視窗系統事件佇列中的所有事件都已經被處理完,一個定時為0的QTimer就會到時間了。
這也可以用來當提供迅速的用戶界面時來做比較繁重的工作。
QTimer *t = new QTimer( myObject );connect( t, SIGNAL(timeout()), SLOT(processOneThing()) ); t->start( 0, FALSE );
myObject->processOneThing()將會被重複調用並且應該很快返回(通常在處理一個數據項之後),這樣Qt可以把事件傳送給視窗部件並且一旦它完成這個工作就停止這個定時器。這是在圖形用戶界面應用程式中實現繁重的工作的一個典型方法,現在多執行緒可以在越來越多的平台上使用,並且我們希望無效事件最終被執行緒替代。
注意QTimer的精確度依賴於底下的作業系統和硬體。絕大多數平台支持20毫秒的精確度,一些平台可以提供更高的。如果Qt不能傳送定時器觸發所要求的數量,它將會默默地拋棄一些。
另一個使用QTimer的方法是為你的對象調用QObject::startTimer()和在你的類中(當然必須繼承QObject)重新實現QObject::timerEvent()事件處理器。缺點是timerEvent()不支持像單觸發定時器或信號那樣的高級水平。
一些作業系統限制可能用到的定時器的數量,Qt會盡力在限制範圍內工作。
也可以參考事件類和時間和日期。

成員函式文檔

QTimer::QTimer

( QObject * parent = 0, const char * name = 0 )
構造一個被稱作name,父對象為parent的定時器。
注意這個父對象的析構函式將會銷毀這個定時器對象。

QTimer::~QTimer ()

銷毀這個定時器。
void QTimer::changeInterval ( int msec )
改變定時間隔為msec毫秒。
如果這個定時器信號是運行的,它將會被停止並且重新開始,否則它將會被開始。
bool QTimer::isActive () const
如果定時器正在運行,返回真,否則返回假。

void QTimer::singleShot

( int msec, QObject* receiver, const char * member ) [靜態]
這個靜態函式在一個給定時間間隔之後調用一個槽。
使用這個函式是非常方便的,因為你不需要被timerEvent或創建一個本地QTimer對象所困擾。
#include <qapplication.h> #include <qtimer.h> int main( int argc, char **argv ) {QApplicationa( argc, argv ); QTimer::singleShot( 10*60*1000, &a, SLOT(quit()) ); ... // 創建並且顯示你的視窗部件 return a.exec(); }
這個示例程式會自動在10分鐘之後終止(也就是600000毫秒)。
receiver是正在接收的對象並且member是一個槽。時間間隔是msec
int QTimer::start ( int msec, bool sshot = FALSE )
開始一個msec毫秒定時的定時器。
如果sshot為真,這個定時器將只會被激活一次,否則它將會持續到它被停止。
任何正在運行的定時器將被停止。

void QTimer::stop ()

停止這個定時器。
也可以參考start()。
void QTimer::timeout () [信號]
當定時器被激活時,這個信號被發射。

相關詞條

熱門詞條

聯絡我們