数字时钟的例子展示了如何使用QLCDNumber来显示具有类似lcd数字的数字。
这个示例还演示了如何使用QTimer定期更新小部件。
详细讲解在:
http://doc.qt.io/qt-5/qtwidgets-widgets-digitalclock-example.html
DigitalClock类提供了一个时钟部件,它显示时间,以一个闪烁的冒号分隔小时和分钟。我们子类化QLCDNumber并实现一个私有插槽showTime()来更新时钟显示:
class DigitalClock : public QLCDNumber
{
Q_OBJECT
public:
DigitalClock(QWidget *parent = nullptr);
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);
}
在构造函数中,我们首先更改LCD编号的外观。填充样式产生凸起的段,填充前景色(通常是黑色)。我们还设置了一个1秒计时器来跟踪当前时间,并将其超时()信号连接到私有的showTime()插槽,以便每秒钟更新一次显示。然后,调用showTime()插槽;如果没有这个调用,在显示时间之前会有一秒钟的启动延迟。
void DigitalClock::showTime()
{
QTime time = QTime::currentTime();
QString text = time.toString("hh:mm");
if ((time.second() % 2) == 0)
text[2] = ' ';
display(text);
}
每当需要更新时钟显示时,就会调用showTime()插槽。
当前时间被转换为一个字符串的格式"hh:mm"。当QTime::second()是偶数时,字符串中的冒号将被替换为空格。这使得冒号每隔一秒出现或消失一次。
最后,我们调用QLCDNumber::display()来更新小部件。
修改:
1.增加日期,时间的详细格式显示,如2020-08-31 08:00
默认显示五个数字,所以需先设置显示数字的数量为19;