Qt定時器問題

2021-09-29 08:25:10 字數 1032 閱讀 3475

1.如果此類繼承於qobject,可以直接呼叫以下函式:

int qobject::starttimer(int interval, qt::timertype timertype = qt::coarsetimer)
此函式開啟乙個定時器,但只返回該定時器的編號,我們無法獲取定時器物件(即使建立了定時器物件也不應該是qtimer型別的,因為,這是在qobject類中的成員函式,不應該出現子類qtimer的身影),所以也無法使用訊號與槽機制,只能通過過載定時器事件處理函式:

[virtual protected] void qobject::timerevent(qtimerevent *event)
在timerevent()函式中可以通過定時器id來區分多個定時器,並分別處理;

關閉定時器可以在類中呼叫以下函式:

void qobject::killtimer(int id)
這裡要注意

定時器不能被其它執行緒start,哪個執行緒建立的就必須使用哪個執行緒start否則會提示

qobject::starttimer: timers cannot be started from another thread

如果不是在主線程中使用必須 exec()  使子執行緒可以正常接收訊號

void cmythread::run()

); this->exec();

}

關閉定時器,必須要在相同的執行緒裡關閉,也就是說你在什麼執行緒啟動,就要在什麼執行緒關閉

或者用主線程關閉

2.可以在類中新增乙個qtimer型別的成員,這樣我們就可以通過訊號與槽機制類實現相應的功能,舉例如下:

qtimer *timer = new qtimer(this);

connect(timer, signal(timeout()), this, slot(update()));

timer->start(1000);

Qt之定時器

qt中定時器的使用有兩種方法,一種是使用qobject類提供的定時器,還有一種就是使用qtimer類。定時器類qtimer提供當定時器觸發的時候發射乙個訊號的定時器,它提供只觸發一次的超時事件。1 啟動定時器 int m timerid starttimer 300 啟動乙個qtimer型別的定時器...

Qt定時器(一)

定時器也是乙個我們經常使用的東西。下面的 演示了定時器的基本使用方法。include mainwindow.h include ui mainwindow.h mainwindow mainwindow qwidget parent qmainwindow parent ui new ui main...

Qt 定時器的使用

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