程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> Qt 之 數字鐘,qt數字鐘

Qt 之 數字鐘,qt數字鐘

編輯:C++入門知識

Qt 之 數字鐘,qt數字鐘


  本例用來展示 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

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved