02DigitalClock例子學習之QLCDNumber
阿新 • • 發佈:2019-01-04
一、首先看一下QT官網的DigitalClock例子
digitalclock.h程式碼如下
#ifndef DIGITALCLOCK_H
#define DIGITALCLOCK_H
#include <QLCDNumber>
//! [0]
class DigitalClock : public QLCDNumber
{
Q_OBJECT
public:
DigitalClock(QWidget *parent = 0);
private slots:
void showTime();
};
//! [0]
#endif // DIGITALCLOCK_H
digitalclock.cpp 程式碼如下
#include <QtWidgets> #include <QDebug> #include "digitalclock.h" //! [0] DigitalClock::DigitalClock(QWidget *parent) : QLCDNumber(parent) { // Outline: 凸起部分填充背景色 // Filled : 凸起部分填充前景色 // Flat : 平面填充前景色 setSegmentStyle(Flat); QTimer *timer = new QTimer(this); connect(timer, SIGNAL(timeout()), this, SLOT(showTime())); timer->start(); // 啟動 showTime(); setWindowTitle(tr("Digital Clock")); resize(250, 60); } //! [0] //! [1] void DigitalClock::showTime() { QTime time = QTime::currentTime(); QString text = time.toString("hh:mm"); // 每隔一秒, :和空格交替閃爍 if ((time.second() % 2) == 0) { text[2] = ' '; } display(text); } //! [1]
main.cpp程式碼如下
#include <QApplication>
#include "digitalclock.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
DigitalClock clock;
clock.show();
return a.exec();
}
顯示效果如下圖所示:
二、進行修改
QT官網的例子我們看到只能顯示 時:分,如果我想顯示 時:分:秒,那隻需要設定
QString text = time.toString("hh:mm"); 修改為 QString text = time.toString("hh:mm:ss");
修改完後發現只能顯示 分:秒,沒有顯示小時,通過檢視QT手冊發現,QLCDNumber預設只能顯示5個字元,所以需要修改顯示字元數。即新增一行內容:
setDigitCount(8);
則顯示效果如下圖所示:
修改後完整的digitalclock.cpp程式碼如下所示
#include <QtWidgets>
#include <QDebug>
#include "digitalclock.h"
//! [0]
DigitalClock::DigitalClock(QWidget *parent)
: QLCDNumber(parent)
{
// Outline: 凸起部分填充背景色
// Filled : 凸起部分填充前景色
// Flat : 平面填充前景色
setSegmentStyle(Flat);
setDigitCount(8); // 設定顯示位數
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(showTime()));
timer->start(); // 啟動
showTime();
setWindowTitle(tr("Digital Clock"));
resize(250, 60);
}
//! [0]
//! [1]
void DigitalClock::showTime()
{
QTime time = QTime::currentTime();
QString text = time.toString("hh:mm:ss");
// 每隔一秒, :和空格交替閃爍
if ((time.second() % 2) == 0)
{
text[2] = ' ';
}
display(text);
}
//! [1]