【QT】 QT定時器的使用

QT定時器的使用

  • 1. QTimer介紹
    • (1)QTimer的使用方法步驟
      • 示例代碼1:定時器的啟動和關閉
      • 現象:
      • 示例代碼2:定時器每隔1s在標簽上切換圖片
      • 現象:
    • (2)實際開發的作用
  • 2.日期 QDate
    • (1)主要方法
  • 3.時間 QTime
    • (1)主要方法
      • 示例代碼:
      • 現象:

1. QTimer介紹

QTimer是Qt中提供的一個定時器類,它可以定時觸發一個信號,用于周期性執行一些操作。使用QTimer,可以輕松地實現定時器功能,如周期性地更新UI界面,周期性地執行一些任務等。

(1)QTimer的使用方法步驟

第一步:定義QTimer的對象
QTimer(QObject *parent = Q_NULLPTR)
參數:parent --this指針
第二步:設置超時時間(定時時間)
void setInterval(int msec)
參數:msec --》毫秒
第三步:啟動定時器
void QTimer::start()
超時時間一旦到了,QTimer對象會自動觸發timeout()信號,程序員只需要關聯這個信號,在自定義的槽函數去實現自己的代碼邏輯即可
第四步:關閉定時器
void QTimer::stop()

示例代碼1:定時器的啟動和關閉

// widget.h
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private slots:void onTimeout();void onStartTimer();void onStopTimer();private:Ui::Widget *ui;QTimer *myTimer;
};
#endif // WIDGET_H// widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QTimer>
#include <QDebug>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// 初始化定時器對象myTimer = new QTimer(this);// 設置定時時間(超時時間)myTimer->setInterval(1000);// 時間到了QTimer的對象會自動觸發timeout信號connect(myTimer, SIGNAL(timeout()), this, SLOT(onTimeout()));// 關聯啟動定時器按鈕的槽函數connect(ui->btn_start, SIGNAL(clicked()), this, SLOT(onStartTimer()));// 關聯關閉定時器按鈕的槽函數connect(ui->btn_close, SIGNAL(clicked()), this, SLOT(onStopTimer()));
}Widget::~Widget()
{delete ui;
}void Widget::onTimeout()
{qDebug()<<"hello world";
}void Widget::onStartTimer()
{qDebug()<<"StartTimer";myTimer->start();
}void Widget::onStopTimer()
{qDebug()<<"stopTimer";myTimer->stop();
}

現象:

在這里插入圖片描述

示例代碼2:定時器每隔1s在標簽上切換圖片

// widget.h
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private slots:void on_pushButton_clicked();void fun();void on_pushButton_2_clicked();private:Ui::Widget *ui;QStringList piclist;QTimer *mytimer;int n; //圖片的下標
};
#endif // WIDGET_H// widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QTimer>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//把所有要顯示的圖片存放到字符串列表中n=0;piclist.append("C:\\Users\\xxx\\Desktop\\vm_shared\\code\\QT_proj\\250414_timerSwitchPic\\res\\1.png");piclist.append("C:\\Users\\xxx\\Desktop\\vm_shared\\code\\QT_proj\\250414_timerSwitchPic\\res\\2.png");piclist.append("C:\\Users\\xxx\\Desktop\\vm_shared\\code\\QT_proj\\250414_timerSwitchPic\\res\\3.png");piclist.append("C:\\Users\\xxx\\Desktop\\vm_shared\\code\\QT_proj\\250414_timerSwitchPic\\res\\4.png");piclist.append("C:\\Users\\xxx\\Desktop\\vm_shared\\code\\QT_proj\\250414_timerSwitchPic\\res\\5.png");//初始化定時器mytimer=new QTimer(this);mytimer->setInterval(1000); //1秒connect(mytimer,SIGNAL(timeout()),this,SLOT(fun()));
}Widget::~Widget()
{delete ui;
}//啟動定時器
void Widget::on_pushButton_clicked()
{mytimer->start();
}void Widget::fun()
{//每隔一秒鐘在標簽上切換顯示圖片QPixmap map(piclist.at(n));map.scaled(ui->label->width(),ui->label->height());ui->label->setScaledContents(true);ui->label->setPixmap(map);//由于只有5張(piclist.size())圖片,n不可以無限制++if(n<piclist.size()-1)n++;elsen=0;
}void Widget::on_pushButton_2_clicked()
{mytimer->stop();
}

現象:

在這里插入圖片描述

(2)實際開發的作用

定時器替代死循環/循環

2.日期 QDate

(1)主要方法

[static] QDate QDate::currentDate()
返回值:QDate的對象,表示當前系統的日期
int QDate::year() const
返回值:返回年
int QDate::month() const
返回值:返回月
int QDate::day() const
返回值:返回日
toString("yyyy-MM-dd")
把日期轉換成字符串

3.時間 QTime

(1)主要方法

[static] QTime QTime::currentTime()
返回值:QTime對象,表示當前系統的時間
int QTime::hour() const
int QTime::minute() const
int QTime::second() const
toString("hh:mm:ss")
把時間轉換成字符串

示例代碼:

// widget.h
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();public slots:void onUpdateTime(void);private:Ui::Widget *ui;
};
#endif // WIDGET_H// widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QTime>
#include <QTimer>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// 1.實例化定時器對象QTimer *timer = new QTimer;// 2.定時器啟動后會以指定的間隔時間發射timeout信號,關聯對應的槽函數,執行對應的操作connect(timer, &QTimer::timeout, this, &Widget::onUpdateTime);// 3.啟動定時器 1s定時timer->start(1000);
}Widget::~Widget()
{delete ui;
}void Widget::onUpdateTime()
{// 顯示到標簽上ui->label_2->setText(QTime::currentTime().toString());
}

現象:

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/75978.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/75978.shtml
英文地址,請注明出處:http://en.pswp.cn/web/75978.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

排序算法詳細介紹對比及備考建議

文章目錄 排序算法對比基本概要 算法逐一介紹1. 冒泡排序&#xff08;Bubble Sort&#xff09;2. 選擇排序&#xff08;Selection Sort&#xff09;3. 插入排序&#xff08;Insertion Sort&#xff09;&#x1f31f;&#x1f31f;4. 希爾排序&#xff08;Shell Sort&#xff09…

Docker華為云創建私人鏡像倉庫

Docker華為云創建私人鏡像倉庫 在華為云官網的 產品 中搜索 容器鏡像服務 &#xff1a; 或者在其他頁面的搜索欄中搜索 容器鏡像服務 &#xff1a; 進入到頁面后&#xff0c;點擊 創建組織 &#xff08;華為云的鏡像倉庫稱為組織&#xff09;&#xff1a; 設置組織名字后&…

微信小程序-自定義toast

微信小程序-自定義toast 微信小程序原生的toast最多能顯示兩行文字。方案1:方案2 微信小程序原生的toast最多能顯示兩行文字。 有時候并不能滿足業務需求。所以我們需要使用第三方或者自定義。 方案1: 第三方vant-toast 微信小程序下載引入第三方vant之后。 在需要使用的頁面…

安卓手游逆向

一、環境安裝 1.1、安裝Java環境 1.2、安裝SDK環境 1.3、安裝NDK環境 二、APK 2.1、文件結構 2.2、打包流程 2.3、安裝流程 應用安裝涉及目錄: system/app ----->系統自帶的應用程序,獲得adb root權限才能刪除。 data/app ------->用戶程序安裝的目錄,安裝…

VSCode Continue 擴展踩坑記錄

Trae 是一款很優秀的 AI 開發工具&#xff0c;但目前支持的平臺還較少&#xff0c;比如不支持 Win7&#xff0c;不支持 Linux&#xff0c;為了在這些平臺上進行開發&#xff0c;我需要尋找一個替代品。經過網上搜索&#xff0c;選擇了 VSCode Continue 擴展&#xff0c;但在使…

Elasticsearch:AI 助理 - 從通才到專才

作者&#xff1a;來自 Elastic Thorben Jndling 在 AI 世界中&#xff0c;關于構建針對特定領域定制的大型語言模型&#xff08;large language models - LLM&#xff09;的話題備受關注 —— 不論是為了更好的安全性、上下文理解、專業能力&#xff0c;還是更高的準確率。這個…

【ARM】MDK燒錄提示Error:failed to execute‘ ‘

1、 文檔目標 解決在燒錄程序的時候&#xff0c;因為選擇了錯誤的燒錄方式導致下載失敗的情況。 2、 問題場景 在燒錄程序的時候出現了提示&#xff1a;“Error&#xff1a;failed to execute ’ ”&#xff08;如圖2-1&#xff09;。檢測Target->Debug配置發現沒有問題&a…

系統分析師(六)-- 計算機網絡

概述 TCP/IP 協議族 DNS DHCP 網絡規劃與設計 邏輯網絡設計 物理網絡設計 題目 層次化網絡設計 網絡冗余設計 綜合布線系統 IP地址 網絡接入技術 其他網絡技術應用 物聯網

優化運營、降低成本、提高服務質量的智慧物流開源了

智慧物流視頻監控平臺是一款功能強大且簡單易用的實時算法視頻監控系統。它的愿景是最底層打通各大芯片廠商相互間的壁壘&#xff0c;省去繁瑣重復的適配流程&#xff0c;實現芯片、算法、應用的全流程組合&#xff0c;從而大大減少企業級應用約95%的開發成本可通過邊緣計算技術…

從One-Hot到TF-IDF:NLP詞向量演進解析與業務實戰指南(一)

從One-Hot到TF-IDF&#xff1a;詞向量演進之路 開場白&#xff1a; 想象一下&#xff0c;你試圖用Excel表格分析《紅樓夢》的情感傾向——每個字詞都是孤立的單元格&#xff0c;計算機看到的只有冰冷的0和1&#xff0c;而“黛玉葬花”的凄美意境卻消失得無影無蹤。這就是NLP工…

2. kubernetes操作概覽

以下是 Kubernetes 的核心操作概覽&#xff0c;涵蓋常用命令、資源管理和典型場景的操作流程&#xff1a; 1. 核心操作工具 (1) kubectl 命令行工具 Kubernetes 的所有操作均通過 kubectl 實現&#xff0c;常用命令如下&#xff1a; 操作類型命令示例作用說明查看資源狀態ku…

從Ampere到Hopper:GPU架構演進對AI模型訓練的顛覆性影響

一、GPU架構演進的底層邏輯 AI大模型訓練效率的提升始終與GPU架構的迭代深度綁定。從Ampere到Hopper的演進路徑中&#xff0c;英偉達通過?張量核心升級?、?顯存架構優化?、?計算范式革新?三大技術路線&#xff0c;將LLM&#xff08;大語言模型&#xff09;訓練效率提升至…

p2p的發展

PCDN&#xff08;P2P內容分發網絡&#xff09;行業目前處于快速發展階段&#xff0c;面臨機遇與挑戰并存的局面。 一、發展機遇 技術融合推動 邊緣計算與5G普及&#xff1a;5G的高帶寬、低延遲特性與邊緣計算技術結合&#xff0c;顯著提升PCDN性能&#xff0c;降低延遲&#x…

計算機視覺與深度學習 | 視覺里程計(Visual Odometry, VO)學習思路總結

視覺里程計(Visual Odometry, VO)學習思路總結 視覺里程計(VO)是通過攝像頭捕獲的圖像序列估計相機運動軌跡的技術,廣泛應用于機器人、自動駕駛和增強現實等領域。以下是一個系統的學習路徑,涵蓋基礎理論、核心算法、工具及實踐建議:一、基礎理論與數學準備 核心數學工具…

Ubuntu 24.04 中文輸入法安裝

搜狗輸入法&#xff0c;在Ubuntu 24.04上使用失敗&#xff0c;安裝教程如下 https://shurufa.sogou.com/linux/guide 出現問題的情況&#xff0c;是這個帖子里描述的&#xff1a; https://forum.ubuntu.org.cn/viewtopic.php?t493893 后面通過google拼音輸入法解決了&#x…

阿里云 MSE Nacos 發布全新“安全防護”模塊,簡化安全配置,提升數據保護

作者&#xff1a;張文浩 阿里云在其微服務引擎&#xff08;MSE&#xff09;注冊配置中心 Nacos 上正式推出全新“安全防護”功能模塊&#xff0c;旨在幫助企業用戶有效管理安全狀態和降低開啟安全相關功能的學習成本&#xff0c;提升微服務架構的安全性。首期推出的“安全防護…

C#核心(23)StringBuilder

前言 我們先前已經了解了String的一些基本規則和常見的用法,今天就來講一下和string有所區別的StringBulider。 在 C# 中,StringBuilder 類是一個非常有用的工具,特別是在需要頻繁修改字符串時。與 String 類型不同,StringBuilder 類提供了一種動態字符串,可以在不創建新…

活動圖與流程圖的區別與聯系:深入理解兩種建模工具

目錄 前言1. 活動圖概述1.1 活動圖的定義1.2 活動圖的基本構成要素1.3 活動圖的應用場景 2. 流程圖概述2.1 流程圖的定義2.2 流程圖的基本構成要素2.3 流程圖的應用場景 3. 活動圖與流程圖的聯系4. 活動圖與流程圖的區別4.1 所屬體系不同4.2 表達能力差異4.3 使用目的與語境4.4…

idea運行springboot項目,運行時不能生成target

1&#xff0c;問題 項目本來運行正常&#xff0c;突然重啟項目運行時&#xff0c;提醒主類找不到&#xff0c;發現target未生成 2&#xff0c;解決辦法 查看.idea里面的文件&#xff0c;正常是下面這樣的 如果有缺失&#xff0c;刪除.idea里面的文件&#xff0c;清除idea緩…

【unity游戲開發——Animator動畫】Animator動畫狀態機復用——重寫動畫控制器 Animator Override Controller

注意&#xff1a;考慮到UGUI的內容比較多&#xff0c;我將UGUI的內容分開&#xff0c;并全部整合放在【unity游戲開發——Animator動畫】專欄里&#xff0c;感興趣的小伙伴可以前往逐一查看學習。 文章目錄 一、狀態機復用是什么&#xff1f;二、實戰專欄推薦完結 一、狀態機復…