Qt事件系統之四 定時器與定時事件

2022-02-20 15:24:51 字數 2453 閱讀 3663

在標頭檔案.h中進行宣告:

private slots:

void timeout(); // 定時器超時槽函式

在.cpp中進行實現相應的功能:

// 建構函式

widget::widget(qwidget *parent) :

qwidget(parent),

ui(new ui::widget)

// 定時器超時槽函式

void widget::timeout()

qdebug() << text;

}

這裡在建構函式中開啟了乙個 1 秒的定時器,當它溢位時就會發射 timeout() 訊號,這時就會執行我們的定時器溢位處理函式。在槽裡我們獲取了當前的時間,並且將它轉換為可以顯示的字串。

「應用程式輸出」視窗輸出如下:

"15:36:23"

"15 36 24"

"15:36:25"

"15 36 26"

如果我們想讓這個計時器只計時一次,那麼必須使用void setsingleshot(bool singleshot)函式。

qtimer *timer = new qtimer(this);

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

timer->setsetsingleshot(true)

timer->start(60000);

這樣計時器只會倒計時 1 分鐘,然後結束。

qtimerevent 類用來描述乙個定時器事件。對於乙個 qobject 的子類,只需要使用 int qobject::starttimer ( int interval) 函式來開啟乙個定時器,這個函式需要輸人乙個以毫秒為單位的整數作為引數來表明設定的時間,它返回乙個整型編號來代表這個定時器。當定時器溢位時就可以在 timerevent() 函式中獲取該定時器的編號來進行相關操作。

使用 qtimerevent 的 timerid() 函式來獲取定時器的編號,然後判斷是哪乙個定時器並分別進行不同的操作。

在標頭檔案.h中進行宣告:

private:

ui::widget *ui;

int id1,id2,id3; // 定時器的編號

protected:

void timerevent(qtimerevent *event); // 定時器事件

在.cpp中進行實現相應的功能:

// 建構函式

widget::widget(qwidget *parent) :

qwidget(parent),

ui(new ui::widget)

// 定時器事件

void widget::timerevent(qtimerevent *event)

else if(event->timerid() == id2)

else if (event->timerid() == id3)

}

「應用程式輸出」視窗輸出如下:

timer1

timer1

timer2

timer1

timer1

timer2

timer3

在標頭檔案.h中進行宣告:

private slots:

void timeout(); // 定時器超時函式

在.cpp中進行實現相應的功能:

// 建構函式

widget::widget(qwidget *parent) :

qwidget(parent),

ui(new ui::widget)

// 定時器超時函式

void widget::timeout()

在使用 qrand() 函式產生隨機數之前,一般要使用 qsrand() 函式為其設定初值,如果不設定初值,那麼每次執行程式,qrand() 都會產生相同的一組隨機數。

為了每次執行程式時,都可以產生不同的隨機數,我們要使用 qsrand() 設定乙個不同的初值。這裡使用了 qtime 類的 secsto() 函式,它表示兩個時間點之間所包含的秒數,比如**中就是指從零點整到當前時間所經過的秒數。

當使用 qrand() 要獲取乙個範圍內的數值時,一般是讓它與乙個整數取餘,比如這裡與 300 取餘,就會使所有生成的數值在 0-299 之間。

「應用程式輸出」視窗輸出如下:

112

212223

102

參考:

56 qt定時器事件和隨機數

實驗四 定時器實驗

一 實驗目的 1 掌握微控制器定時 計數器的使用方法。2 掌握定時 計數器程式設計方法。二 實驗裝置及軟體 1 pc機 2 keil51 3 proteaus 三 實驗任務 1 迴圈點亮流水等d1 d2 d3 d8,延時採用定時器t0定時100ms 2 迴圈點亮流水等d1 d2 d3 d8,延時採用...

Qt事件 定時器事件

qt中的定時器除了實用qtimer之外,凡是繼承了qobject的物件都可以使用定時器事件。1 開啟定時器 int qobject starttimer int interval,qt timertype timertype qt coarsetimer 返回值是定時器id。引數1是時間間隔,可以有...

zigbee基礎應用(四)定時器

1.暫存器相關 舉個栗子 t1ctl 0x0d 128分頻,自動重灌 0x0000 0xffff t1stat 0x21 通道0,中斷有效 2.程式案例 描述 通過定時器t1查詢方式控制led1周 期性閃爍 include define uint unsigned int define uchar ...