Qt定時器及實現(詳解)

2021-10-13 01:35:55 字數 1297 閱讀 5119

定時器是用來處理週期性事件的一種物件,類似於硬體定時器。例如設定乙個定時器的定時週期為 1000 毫秒,那麼每 1000 毫秒就會發射定時器的 timeout() 訊號,在訊號關聯的槽函式裡就可以做相應的處理。

qt 中的定時器類是 qtimer。qtimer 不是乙個可見的介面元件,在 ui 設計器的元件面板裡找不到它。圖 1 中的例項程式實現了乙個計時器的功能,就是計算定時器開始到停止持續的時間長度,計時器是 qtime 類。

圖 1 定時器例項程式執行示意圖

qtimer 主要的屬性是 interval,是定時中斷的週期,單位毫秒。qtimer 主要的訊號是 timeout(),在定時中斷時發射此訊號,要想在定時中斷裡做出響應,這就需要編寫 timeout() 訊號的槽函式。下面是視窗類中增加的定義(省略了其他不相關的定義):

class dialog : public qdialog

;這裡定義了乙個定時器 ftimer,—個計時器 ftimecounter。還定義了乙個槽函式 on_timer_ timeout(),作為定時器的 timeout() 訊號的響應槽函式。

需要在視窗類的建構函式裡建立定時器,並進行訊號與槽的關聯。**如下:

dialog::dialog(qwidget *parent) : qdialog(parent), ui(new ui::dialog)

槽函式 on_timer_timeout() 的實現**如下:

void dialog::on_timer_timeout()

這段**首先用 qtime 類的靜態函式 qtime::currenttime() 獲取當前時間,然後用 qtime 的成員函式 hour()、minute()、second() 分別獲取小時、分鐘、秒,並在幾個 lcdnumber 元件上顯不。迴圈更新 progressbar 的值,是為了讓介面有變化,表示定時器在執行。

設定定時器的週期,只需呼叫 qtimer::setlnterval() 函式即可。

qtimer::start() 函式用於啟動定時器,介面上的「開始」按鈕**如下:

void dialog::on_btnstart_clicked()

計時器 ftimecounter 執行 start() 是將當前時間作為計時器的時間。

qtimer::stop() 函式停止定時器,介面上的「停止」按鈕可實現這一功能,其**如下:

void dialog::on_btnstop_clicked()

Qt程式設計詳解 定時器

qt中的qtimer兩種使用方式 一 建立timer類 訊號 void start int msec 成員函式,開啟定時器並設定定時器的時間間隔 單位毫秒 時間到後會發出timeout訊號,連線槽函式即可 直到呼叫stop 函式停止。ifndef widget h define widget h i...

nginx 定時器實現詳解

nginx定時器算是nginx乙個重要的功能,nginx的定時器除了實現更新時間的功能之外,還提供了設定處理定時器的功能。而定時器的功能,在nginx中使用非常廣泛。nginx定時器的實現原理 nginx定時器的實現位於event ngx event timer檔案中,在nginx worker的無...

Qt之定時器

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