十 Qt Creator中實現定時器和產生隨機數

2021-05-12 19:47:48 字數 1745 閱讀 7174

有兩種方法實現定時器。

第一種。自己建立關聯。

1.新建gui工程,工程名可以設定為timer。並在主介面上新增乙個標籤label,並設定其顯示內容為「0000-00-00 00:00:00 星期日」。

2.在mainwindow.h中新增槽函式宣告。

private slots:

void timerupdate();

3.在mainwindow.cpp中新增**。

新增#include 的標頭檔案包含,這樣就包含了qtcore下的所有檔案。

建構函式裡新增**:

qtimer *timer = new qtimer(this);

//新建定時器

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

//關聯定時器計滿訊號和相應的槽函式

timer->start(1000);

//定時器開始計時,其中1000表示1000ms即1秒

4.然後實現更新函式。

void mainwindow::timerupdate()

5.執行程式,效果如下。

第二種。使用事件。(有點像微控制器中的定時器啊)

1.新建工程。在視窗上新增兩個標籤。

2.在main.cpp中新增**,實現中文顯示。

#include

qtextcodec::setcodecfortr(qtextcodec::codecforlocale());

3.在mainwindow.h中新增**。

void timerevent(qtimerevent *);

4.在mainwindow.cpp中新增**。

新增標頭檔案#include

在建構函式裡新增以下**。

starttimer(1000);//其返回值為1,即其timerid為1

starttimer(5000);//其返回值為2,即其timerid為2

starttimer(10000); //其返回值為3,即其timerid為3

新增了三個定時器,它們的timerid分別為1,2,3。注意,第幾個定時器的返回值就為幾。所以要注意定時器順序。

在下面新增函式實現。

void mainwindow::timerevent(qtimerevent *t) //定時器事件

} 這裡新增了三個定時器,並都在定時器事件中判斷它們,然後執行相應的功能。這樣就不用每個定時器都寫乙個關聯函式和槽函式了。

隨機數的實現:

上面程式中的qrand(),可以產生隨機數,qrand()%10可以產生0-9之間的隨機數。要想產生100以內的隨機數就%100。以此類推。

但這樣每次啟動程式後,都按同一種順序產生隨機數。為了實現每次啟動程式產生不同的初始值。我們可以使用qsrand(time(0));實現設定隨機數的初值,而程式每次啟動時time(0)返回的值都不同,這樣就實現了產生不同初始值的功能。

我們將qsrand(time(0));一句加入建構函式裡。

程式最終執行效果如下。

Spring Spring中定時器實現

在一些工作需要使用到定時器,spring 很好的整合了定時器的功能!在spring 中使用quartz,本文介紹spring3.0以後自主開發的定時任務工具,spring task,可以將它比作乙個輕量級的quartz,而且使用起來很簡單,除spring相關的包外不需要額外的包,下面介紹兩種方式實現...

在Python Tkinter中實現定時重新整理資料

最近正在做乙個關於tkinter的程式設計,發現tk雖然通過按鍵,能實現相關函式的重新整理,使得視窗中的資料也實時更新。但我現在冒出這樣乙個念頭,要是我想不通過按鍵實現某些資料的實時重新整理,應該怎麼做?起初我便在tk程式設計中加入乙個while迴圈,使資料進行重新整理,結果導致程式卡在whlie迴...

在Oracle中實現定時操作

眾所周知,一般作業系統會提供定時執行任務的方法,例如 unix平台上提供了讓系統定時執行任務的命令crontab。但是,對於某些需求,例如 一些對資料庫表的操作,最為典型的是 交易所每日 後的結算,它涉及大量的資料庫表操作,如果仍然利用作業系統去定時執行,不僅需要大量的程式設計工作,而且還會出現使用...