Qt定時器和隨機數詳解

2022-10-04 03:57:07 字數 2071 閱讀 6402

環境是: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...