【QT 教程】Digital Clock Example

本文翻译自QT官方文档


该教程是数字时钟的一个示例,它会向你展示如何使用QLCDnumber去显示LCD一样的数字。

这个例子同样展示了如何用QTimer在固定间隔更新一个widget。

 

DigitalClock类定义

该DigitalClock类提供了一个时钟widget,用它来显示以闪烁的冒号为分隔的时间。我们继承QLCDNumber类和实现一个叫showTim()的私用插槽来更新时钟的显示:

class DigitalClock : public QLCDNumber
{
    Q_OBJECT

public:
    DigitalClock(QWidget *parent = 0); //构造函数

private slots:
    void showTime();  //显示时间
};

DigitalClock类的实现:

DigitalClock::DigitalClock(QWidget *parent)
    : QLCDNumber(parent)
{
    setSegmentStyle(Filled);  //显示样式,继承于QLCDNumber

    QTimer *timer = new QTimer(this);
    connect(timer, SIGNAL(timeout()), this, SLOT(showTime())); //建立计时器和显示函数的关联
    timer->start(1000); //timeout的发射间隔

    showTime();

    setWindowTitle(tr("Digital Clock")); //widget的标题
    resize(150, 60); //窗口大小
}

在构造函数中,我们首先改变LCD数字的样式。QLCDNumber::Filled 样式产生raised segments填充前景色(通常是黑色)。我们还设立了间隔为1秒的计时器来检测当前的时间,我们将计时器的timeout()信号连接到专用的showTime()插槽,这使得显示每秒更新一次。然后,我们调用showTime()插槽; 如果没有这个调用的话,在时间显示前将会有一秒钟的延迟启动时间。


void DigitalClock::showTime()
{
    QTime time = QTime::currentTime();   //当前时间
    QString text = time.toString("hh:mm");
    if ((time.second() % 2) == 0)   //冒号每两秒闪烁一次
        text[2] = ' ';
    display(text); //LCDNumber显示函数
}

每当时钟显示需要更新时,showTime()槽就会被调用。当前时间会被转换成“HH:MM”的字符串格式。当QTime::second()是偶数时,则该冒号被替换为空字符串。这使得冒号每隔一秒出现和消失。

最后,我们调用QLCDNumber::display()函数去更新widget.

#include <QApplication>

#include "digitalclock.h"

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    DigitalClock clock;
    clock.show();
    return app.exec();
}

main函数,创建DigitalClock的对象,进行显示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值