基于QLCDNumber实现的LCD的时钟显示。
DigitalClock继承于QLCDNumber,并实现一个槽函数showTime()
用来定时更新时钟显示:
class DigitalClock : public QLCDNumber
{
Q_OBJECT
public:
DigitalClock(QWidget *parent = 0);
private slots:
void showTime();
};
DigitalClock构造函数初始化时间刷新定时器(一秒刷新一次)。
DigitalClock::DigitalClock(QWidget *parent)
: QLCDNumber(parent)
{
setSegmentStyle(Filled);
QTimer *timer = new QTimer(this);
connect(timer, &QTimer::timeout, this, &DigitalClock::showTime);
timer->start(1000);
showTime();
setWindowTitle(tr("Digital Clock"));
resize(150, 60);
}
通过触发槽函数showTime
从而调用display
函数更新显示。这里有个小细节就是,将当前时间将转换为格式为hh:mm
的字符串。当time.second()
是偶数时,字符串中的冒号将被替换为空格。这样就可以每隔一秒出现并消失一次形成动态效果。
void DigitalClock::showTime()
{
QTime time = QTime::currentTime();
QString text = time.toString("hh:mm");
if ((time.second() % 2) == 0)
text[2] = ' ';
display(text);
}
C:\Qt\{你的Qt版本}\Examples\{你的Qt版本}\widgets\widgets\digitalclock
https://doc.qt.io/qt-5/qtwidgets-widgets-digitalclock-example.html