1. 程式人生 > >02DigitalClock例子學習之QLCDNumber

02DigitalClock例子學習之QLCDNumber

一、首先看一下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();
}

顯示效果如下圖所示:

1

二、進行修改

QT官網的例子我們看到只能顯示 時:分,如果我想顯示 時:分:秒,那隻需要設定

QString text = time.toString("hh:mm");

修改為

QString text = time.toString("hh:mm:ss");

修改完後發現只能顯示 分:秒,沒有顯示小時,通過檢視QT手冊發現,QLCDNumber預設只能顯示5個字元,所以需要修改顯示字元數。即新增一行內容:

setDigitCount(8);

則顯示效果如下圖所示:

2

修改後完整的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]