Qt 之 數字鐘

来源:http://www.cnblogs.com/xinxue/archive/2016/11/18/6078237.html
-Advertisement-
Play Games

本例用來展示 QTimer 的使用,如何定時的更新一個視窗部件。 1 QLCDNumber 類 QLCDNumber 是一種可將數字顯示為類似 LCD 形式的視窗部件,它同 QLabel 一樣,都繼承自 QFrame,而 QFrame 繼承自 QWidget 頭文件 digitalclock.h D ...


  本例用來展示 QTimer 的使用,如何定時的更新一個視窗部件。

1  QLCDNumber 類

  QLCDNumber 是一種可將數字顯示為類似 LCD 形式的視窗部件,它同 QLabel 一樣,都繼承自 QFrame,而 QFrame 繼承自 QWidget

  頭文件 digitalclock.h

 1 #include <QLCDNumber>
 2 
 3 class DigitalClock : public QLCDNumber
 4 {
 5     Q_OBJECT
 6 
 7 public:
 8     DigitalClock(QWidget *parent = 0);
 9     ~DigitalClock();
10 
11 private slots:
12     void showTime();
13 };

  DigitalClock 繼承自 QLCDNumber 類,對於需要信號和槽的類,#5 處的 Q_OBJECT 巨集是必需的,#8 聲明構造函數,#9 聲明析構函數,#11~12 聲明槽函數 showTime(),其中構造函數的實現如下:

 1 DigitalClock::DigitalClock(QWidget *parent)
 2     : QLCDNumber(parent)
 3 {
 4     setSegmentStyle(QLCDNumber::Filled);
 5 
 6     showTime();
 7 
 8     setWindowTitle(tr("Digital Clock"));
 9     resize(150, 60);
10 }

  析構函數內容為空,槽函數 showTime() 中, #3 獲取到當前時間後,#4 將其轉換為 “hh:mm” 格式,#5 顯示出時間。

1 void DigitalClock::showTime()
2 {
3     QTime time = QTime::currentTime();
4     QString text = time.toString("hh:mm");
5     display(text);
6 }

  此時,程式可以顯示數字時鐘,但不是實時,只在第一次運行時獲取當前的時間並顯示出來。為了實時顯示,則需要下麵的 QTimer 類。

2  QTimer 類

  QTimer 類繼承自 QObject,可用來實時的更新時間。構造函數如下:#6 新建一個定時器,#7 利用 connect() 函數,連接信號 timeout() 和 槽函數 showTime(),#8 開啟定時器,並設置時間間隔為 1000 ms

 1 DigitalClock::DigitalClock(QWidget *parent)
 2     : QLCDNumber(parent)
 3 {
 4     setSegmentStyle(QLCDNumber::Filled);
 5 
 6     QTimer *timer = new QTimer(this);
 7     connect(timer, SIGNAL(timeout()), this, SLOT(showTime()));
 8     timer->start(1000);
 9 
10     showTime();
11     
12     setWindowTitle(tr("Digital Clock"));
13     resize(150, 60);
14 }

    最終的 showTime() 如下: #5 和 #6 通過取餘運算,使得時鐘和分鐘之間的分號,每隔一秒就消失,從而實現閃爍功能

1 void DigitalClock::showTime()
2 {
3     QTime time = QTime::currentTime();
4     QString text = time.toString("hh:mm");
5     if((time.second() % 2) == 0)
6         text[2] = ' ';
7     display(text);
8 }

   界面如下:

  

 

參考資料:

  Qt 助手,Qt 5.7 | Qt Widgets | Digital Clock Example

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 2.1上傳 2.2解壓jdk #創建文件夾 mkdir /usr/java #解壓 tar -zxvf jdk-7u55-linux-i586.tar.gz -C /usr/java/ 2.3將java添加到環境變數中 vim /etc/profile #在文件最後添加 export JAVA_HO ...
  • 前面幾篇講解瞭如何使用rabbitMq,這一篇主要講解spring集成rabbitmq。 首先引入配置文件org.springframework.amqp,如下 一:配置消費者和生成者公共部分 二:配置生成者 三:生產者程式 其中convertAndSend方法預設第一個參數是交換機名稱,第二個參數 ...
  • 今天我們來探索python中大部分的異常報錯 首先異常是什麼,異常白話解釋就是不正常,程式裡面一般是指程式員輸入的格式不規範,或者需求的參數類型不對應,不全等等。 打個比方很多公司年終送蘋果筆記本,你程式話思維以為是(MAC)電腦筆記本,結果給你個蘋果+筆記本。。。首先類型不對,數量也不對。 先來看 ...
  • 》JavaAPI 文檔註釋可以在:類,常量,方法上聲明 文檔註釋可以被javadoc命令所解析並且根據內容生成手冊 1 package cn.fury.se_day01; 2 /** 3 * 文檔註釋可以在:類,常量,方法上聲明 4 * 文檔註釋可以被javadoc命令所解析並且根據內容生成手冊 5 ...
  • 一、算數運算符和算術表達式 +加 a+b -減 a-b *乘 a*b /除 a/b %取模 a%b **求冪 a**b 二、關係運算符和關係表達式 < ,<=,>,>=,==,!=其中< ,<=,>,>=,的運算符的優先順序大於==,!= 三、邏輯運算符和邏輯表達式 and 與a and b or 或 ...
  • 問題:在 Android 平臺下,顯示 Emoji 文字,無法顯示彩色(皆為黑色),例如 Edit 控制項,即使將 Edit.ControlType = Platform 設為平臺原生控制項,還是沒用(真機測試 Edit.ControlType 設定為 Style 與 Platform 是一樣的,而 i ...
  • 一、命名規則 1.變數名、包名、模塊名通常採用小寫,也可以使用下劃線 2.類名首字母大寫,對象名小寫。類的私有變數、私有方法以兩個下劃線作為首碼 例:class Student: #類名 student = Student(“ddd”) #對象 3.函數名通常採用小寫 例:def compareNu ...
  • 改源代碼大小 1.File→Settings→Editor→Colors&Fonts→Font 2.首先得需要Save as一個Scheme,接下來才可以修改字體,名字可以任意取 改運行字體的大小 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...