Qt中的兩種定時器的差異

2021-08-08 01:41:12 字數 1439 閱讀 2309

qt有兩種定時器,一種是qobject類的定時器,另一種是qtimer類的定時器。

(1)qobject類的定時器

qobject類提供了乙個基本的定時器,通過函式starttimer()來啟動,通過killtimer()來結束,通過qtimerevent來處理定時器事件。

int starttimer(int interval, qt::timertype timertype = qt::coarsetimer);

void killtimer(int id);

void qobject::timerevent(qtimerevent * event);

starttimer(int interval)啟動乙個時間間隔為interval毫秒的定時器,返回乙個定時器識別符號,如果未能啟動成功,則返回0。

該定時器只能使用killtime()來殺死,killtimer(int id)通過定時器識別符號來殺死定時器。

如果有多個定時器,可以通過qtimerevent::timerid()來獲取已經啟動的定時器識別符號。

(2)qtimer類的定時器

qtimer類定時器是qobject類定時器的擴充套件版或者說公升級版,因為它可以提供更多的功能。比如說,它支援單次觸發和多次觸發。

使用qtimer類定時器的步驟:

(1)建立乙個qtimer定時器例項:qtimer *timer = new qtimer(this);

(2)連線超時訊號與槽:connect(timer, signal(timeout()), this, slot(testfunc()));

(3)啟動定時器start();

(4)適時關閉定時器:stop();

(5)刪除定時器例項:delete timer;

公共函式:

int interval() const 獲得定時器時間間隔

bool isactive() const 獲得定時器啟用狀態

bool issingleshot() const 獲得單次觸發使能狀態

int remainingtime() const 獲得距離觸發定時器事件的剩餘時間

void setinterval(int msec) 設定定時器時間間隔

void setsingleshot(bool singleshot) 設定使能/禁用單次觸發

void settimertype(qt::timertype atype) 設定定時器型別

int timerid() const 獲得定時器識別符號

qt::timertype timertype() const 獲得定時器型別

公共槽函式:

void start(int msec) 啟動定時時間間隔為msec毫秒的定時器

void start() 啟動定時器

void stop() 暫停定時器

訊號:

void timeout() 超時

Qt中兩種定時器用法

原文在這裡 在qt中使用定時器有兩種方法,一種是使用qobiect類的定時器 一種是使用qtimer類。定時器的精確性依賴於作業系統和硬體,大多數平台支援20ms的精確度。1.qobject類的定時器 qobject是所有qt物件的基類,它提供了乙個基本的定時器。通過qobject starttim...

Qt中兩種定時器用法

在qt中使用定時器有兩種方法,一種是使用qobiect類的定時器 一種是使用qtimer類。定時器的精確性依賴於作業系統和硬體,大多數平台支援20ms的精確度。1.qobject類的定時器 qobject是所有qt物件的基類,它提供了乙個基本的定時器。通過qobject starttimer 可以把...

Qt中兩種定時器用法

在qt中使用定時器有兩種方法,一種是使用qobiect類的定時器 一種是使用qtimer類。定時器的精確性依賴於作業系統和硬體,大多數平台支援20ms的精確度。1.qobject類的定時器 qobject是所有qt物件的基類,它提供了乙個基本的定時器。通過qobject starttimer 可以把...