日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【Qt】Qt定时器

發(fā)布時間:2024/4/24 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Qt】Qt定时器 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

00. 目錄

文章目錄

    • 00. 目錄
    • 01. 概述
    • 02. 開發(fā)環(huán)境
    • 03. 定時器事件
    • 04. 定時器信號
    • 05. 附錄

01. 概述

QTimerEvent類用來描述一個定時器事件。

Qt中有兩種方法來使用定時器,一種是定時器事件,另一種是使用信號和槽。一般使用了多個定時器時最好使用定時器事件來處理。

02. 開發(fā)環(huán)境

Windows系統(tǒng):Windows10

Qt版本:Qt5.15或者Qt6

03. 定時器事件

3.1 新建Qt Widgets應(yīng)用,項目名稱為7Timer,基類選擇QWidget,類名為Widget。

3.2 widget.h文件中添加函數(shù)聲明:

protected:void timerEvent(QTimerEvent *event);

3.3 添加私有變量

private:int id1;int id2;int id3;

3.4 .下面到設(shè)計模式,向界面上拖入兩個標(biāo)簽部件Label

3.5 進(jìn)入widget.cpp文件,先在構(gòu)造函數(shù)中添加如下代碼

//啟動3個定時器 返回定時器IDid1 = startTimer(1000);id2 = startTimer(2000);id3 = startTimer(10000);

這里開啟了三個定時器,分別返回了它們的id,這個id用來區(qū)分不同的定時器。定時器的時間單位是毫秒。每當(dāng)一個定時器溢出時,都會調(diào)用定時器事件處理函數(shù),我們可以在該函數(shù)中進(jìn)行相應(yīng)的處理。

3.6 實現(xiàn)定時器事件處理函數(shù)

//定時器事件 void Widget::timerEvent(QTimerEvent *event) {//判斷是哪個定時器超時if (event->timerId() == id1){ui->label->setText(tr("%1").arg(qrand() % 10));}else if (event->timerId() == id2){ui->label_2->setText(tr("定時器2"));}else{qApp->quit();} }

使用timerId()函數(shù)返回了溢出的定時器的id,然后根據(jù)該id來判斷是哪個定時器溢出了,并進(jìn)行相應(yīng)的處理。每當(dāng)?shù)谝粋€定時器溢出時都產(chǎn)生一個小于10的隨機(jī)數(shù);當(dāng)?shù)诙€定時器溢出時,就更改標(biāo)簽的文本;當(dāng)?shù)谌齻€定時器溢出時則退出應(yīng)用程序。

04. 定時器信號

如果只是想開啟少量的定時器,也可以使用信號和槽來實現(xiàn)。

4.1 先在widget.h中添加一個私有槽聲明

private slots:void timerUpdate();

4.2 widget.cpp中添加頭文件

#include <QTimer> #include <QDateTime>

4.3 在構(gòu)造函數(shù)中添加如下代碼

QTimer *timer = new QTimer(this);//關(guān)聯(lián)定時器溢出洗好和響應(yīng)的槽函數(shù)connect(timer, &QTimer::timeout, this, &Widget::timerUpdate);//啟動定時器timer->start(1000);

4.4 實現(xiàn)timerUpdate()函數(shù)

void Widget::timerUpdate() {QString str;//獲取系統(tǒng)當(dāng)前時間QDateTime time = QDateTime::currentDateTime();//設(shè)置系統(tǒng)時間顯示格式str = time.toString("yyyy-MM-dd hh:mm:ss dddd");ui->lineEdit->setText(str); }

4.5 執(zhí)行結(jié)果

05. 附錄

源碼下載:【Qt】Qt定時器.rar

總結(jié)

以上是生活随笔為你收集整理的【Qt】Qt定时器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。