Qt中的定時器的使用
有兩種方法實現定時器。
第一種。自己建立關聯。
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()
{
QDateTime time = QDateTime::currentDateTime();
//獲取系統現在的時間
QString str = time.toString("yyyy-MM-dd hh:mm:ss dddd");
//設定系統時間顯示格式
ui->label->setText(str);
//在標籤上顯示時間
}
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) //定時器事件
{
switch(t->timerId()) //判斷定時器的控制程式碼
{
case 1 : ui->label->setText(tr("每秒產生一個隨機數:%1").arg(qrand()%10));break;
case 2 : ui->label_2->setText(tr("5秒後軟體將關閉"));break;
case 3 : qApp->quit();break; //退出系統
}
}
這裡新增了三個定時器,並都在定時器事件中判斷它們,然後執行相應的功能。這樣就不用每個定時器都寫一個關聯函式和槽函式了。
隨機數的實現:
上面程式中的qrand(),可以產生隨機數,qrand()%10可以產生0-9之間的隨機數。要想產生100以內的隨機數就%100。以此類推。
但這樣每次啟動程式後,都按同一種順序產生隨機數。為了實現每次啟動程式產生不同的初始值。我們可以使用qsrand(time(0));實現設定隨機數的初值,而程式每次啟動時time(0)返回的值都不同,這樣就實現了產生不同初始值的功能。
我們將qsrand(time(0));一句加入建構函式裡。
程式最終執行效果如下。
原文連結:http://hi.baidu.com/yafeilinux/blog/item/df53dbc315754f110ff4775a.html
相關文章
- VC中定時器的使用定時器
- spring中定時器的使用Spring定時器
- Qt QTimer定時器QT定時器
- java定時器的使用Java定時器
- C++定時器的使用C++定時器
- [iOS]各種定時器–最全的定時器使用iOS定時器
- Qt中利用定時器QTimer實時顯示當前日期和時間QT定時器
- iOS中的3種定時器iOS定時器
- C#中的定時器(二)C#定時器
- Android中的定時器AlarmManagerAndroid定時器
- Qt中利用定時器QTimer準實時顯示當前日期和時間QT定時器
- QT中 uic 工具的使用QTUI
- 5、Angular中的$timeOut定時器Angular定時器
- java 中定時器Java定時器
- Qt事件過濾器的使用QT事件過濾器
- CADisplayLink 及定時器的使用定時器
- 定時器以及定時器的幾個案例定時器
- 微控制器學習(六)定時器的使用定時器
- 使用Selenium時的瀏覽器設定瀏覽器
- Go 的定時器Go定時器
- QT中 視窗部件的 背景圖片 的設定QT
- qt中實現實時的顯示當前時刻的時間QT
- Spring 定時器的使用—Xml、Annotation、自定義Spring定時器XML
- 直播軟體開發,ScheduledExecutorService定時器的使用定時器
- Spring 定時器的使用---Xml、Annotation、自定義Spring定時器XML
- 多執行緒-定時器的概述和使用執行緒定時器
- qt QTextEdit選中內容拖拽時的滑鼠樣式無法設定問題QT
- Java可自定義中斷定時器的實現Java定時器
- Qt中(圖片)資源的使用方式QT
- MongoDB中的定時索引MongoDB索引
- javascript定時器(setTimeout和setInterval)的使用詳解JavaScript定時器
- 使用監聽器實現JavaWeb的定時執行JavaWeb
- 非視窗類中使用定時器的方法 (轉)定時器
- 【JavaScript定時器小案例】常見的幾種定時器實現的案例JavaScript定時器
- Qt中按鈕背景圖片的切換設定QT
- 51模組_定時器與中斷定時器
- 模型的列表定義中,使用函式時如何定義引數?模型函式
- 定時器引發的思考定時器