環境是:windows 7 + qt 4.8.1 +qt creator 2.4.1
一、定時器
qt中有兩種方法來使用定時器,一種是定時器事件,另一種是使用訊號和槽。一般使用了多個定時器時最好使用定時器事件來處理。
1.新建qt gui應用,專案名稱為mytimer,基類選擇qwidget,類名為widget。
2.到widget.**件中新增函式宣告:
protected:
void timerevent(qtimerevent *);
然後新增私有變數定義:
int id1, id2, id3;
3.下面到設計模式,向介面上拖入兩個標籤部件label。
4.下面進入widget.cpp檔案,先在建構函式中新增如下**:
id1 = starttimer(1000); // 開啟乙個1秒定時器,返回其id
id2 = starttimer(2000);
id3 = starttimer(10000);
這裡開啟了三個定時器,分別返回了它們的id,這個id用來區分不同的定時器。定時器的時間單位是毫秒。每當乙個定時器溢位時,都會呼叫定時器事件處理函式,我們可以在該函式中進行相應的處理。
5.下面新增定時器事件處理函式的定義:
void widget::timerevent(qtimerevent *event)
else if (event->timerid() == id2)
else
}這裡先使用timerid()函式返回了溢位的定時器的id,然後根據該id來判斷是哪個定時器溢位了,並進行相應的處理。每當第乙個定時器溢位時都產生乙個小於10的隨機數;當第二個定時器溢位時,就更改標籤的文字;當第三個kvbaehwxp定時器溢位時則退出應用程式。現在可以執行程式,檢視效果。
6.如果只是想開啟少量的定時器,也可以使用訊號和槽來實現。
先在widget.h中新增乙個私有槽宣告:
private slots:
void timerupdate();
然後到設計模式向介面上新增乙個行編輯器部件line edit,再到widget.cpp中新增標頭檔案包含:
#include
#include
然後在建構函式中新增如下**:
qtimer *timer = new qtimer(this);
//關聯定時器溢位訊號和相應的槽函式
connect(timer, signal(timeout()), this, slot(timerupdate()));
timer->start(1000);
這裡建立了乙個定時器,並將其溢位訊號和更新槽關聯起來,最後使用start()函式來開啟定時器。
下面新增timerupdate()函式的定義:
void widget::timerupdate()
這裡在行編輯器中顯示了當前的時間。現在可以執行程式,檢視效果。
二、隨機數
關於隨機數,在qt中是使用qrand()和qsrand()兩個函式實現的。在前面的程式中已經看到了qrand()函式的使用,其可以產生隨機數,qrand()%10可以產生0-9之間的隨機數。要想產生100以內的隨機數就是%100。以此類推。
在使用qrand()函式產生隨機數之前,一般要使用qsrand()函式為其設定初值,如果不設定初值,那麼每次執行程式,qrand()都會產生相同的一組隨機數。為了每次執行程式時,都可程式設計客棧以產生不同的隨機數,我們要使用qsrand()設定乙個不同的初值。這裡使用了qtime類的secsto()函式,它表示兩個時間點之間所包含的秒數,比如**中就是指從零點整到當前時間所經過的秒數。
下面先在widget.cpp的建構函式中新增如下**:
qsrand(qtime(0, 0, 0).secsto(qtime::currenttime()));
然後在timerupdate()函式的最後新增如下**:
int rand = qrand() % 300; // 產生300以內的正整數
ui->lineedit->move(rand, rand);
本文標題: qt定時器和隨機數詳解
本文位址: /ruanjian/c/126624.html
qt產生乙個隨機字串 Qt定時器和隨機數詳解
環境是 windows 7 qt 4.8.1 qt creator 2.4.1 一 定時器 qt中有兩種方法來使用定時器,一種是定時器事件,另一種是使用訊號和槽。一般使用了多個定時器時最好使用定時器事件來處理。1.新建qt gui應用,專案名稱為mytimer,基類選擇qwidget,類名為widg...
QT開發(七) 定時器事件,系統時間,隨機數
我們來學習一些小知識點,分別是定時器的時間,系統時間,以及隨機數,這裡要說明一下,事件和訊號是不一樣的,不要混淆了,表面看起來都是為了觸發某個功能,實際上你可以理解為時間他更偏向底層一些 我們其實學習過定時器 在這個小專案中,我們使用的是通過timeout訊號去實現的定時觸發,實際上,與上篇一樣,我...
Qt程式設計詳解 定時器
qt中的qtimer兩種使用方式 一 建立timer類 訊號 void start int msec 成員函式,開啟定時器並設定定時器的時間間隔 單位毫秒 時間到後會發出timeout訊號,連線槽函式即可 直到呼叫stop 函式停止。ifndef widget h define widget h i...