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
相關文章
- Qt - QTimer(定時器)QT定時器
- Qt QTimer定時器QT定時器
- Qt中利用定時器QTimer實時顯示當前日期和時間QT定時器
- Golang當中的定時器Golang定時器
- iOS中的3種定時器iOS定時器
- Qt事件過濾器的使用QT事件過濾器
- 定時器以及定時器的幾個案例定時器
- 微控制器學習(六)定時器的使用定時器
- Spring 定時器的使用—Xml、Annotation、自定義Spring定時器XML
- Spring 定時器的使用---Xml、Annotation、自定義Spring定時器XML
- java 中定時器Java定時器
- javascript定時器(setTimeout和setInterval)的使用詳解JavaScript定時器
- 直播軟體開發,ScheduledExecutorService定時器的使用定時器
- qt中實現實時的顯示當前時刻的時間QT
- qt QTextEdit選中內容拖拽時的滑鼠樣式無法設定問題QT
- qt-實時顯示本地時間、以及QDateTime的使用QT
- GO的定時器Timer 和定時任務cronGo定時器
- 【JavaScript定時器小案例】常見的幾種定時器實現的案例JavaScript定時器
- MongoDB中的定時索引MongoDB索引
- 模型的列表定義中,使用函式時如何定義引數?模型函式
- 定時器引發的思考定時器
- Qt中的佈局淺析與彈簧的使用,以及Qt居中的兩種方法QT
- Debug: setTimeout 使用做定時器時的錯誤函式傳遞方式定時器函式
- autohotkey qt程式中無法使用的問題QT
- JS忍者祕籍中的定時器機制詳解JS定時器
- QT的QAxBase類的使用QT
- QT的QWGLNativeContext類的使用QTContext
- QT的QImage類的使用QT
- QT的QProgressDialog類的使用QT
- java中SpringBoot定時器註解JavaSpring Boot定時器
- MySQL中的時區設定MySql
- golang 定時器的不同任務Golang定時器
- 直播平臺軟體開發,cocos lua --定時器的使用定時器
- Qt設定根據編譯器不同連結不同的lib庫QT編譯
- 基於51微控制器的定時器定時器
- 51模組_定時器與中斷定時器
- Redis中Lua指令碼的使用和設定超時坍淑Redis指令碼
- spring boot中的定時任務Spring Boot
- Java 中的定時任務(一)Java