Qt数字时钟示例

数字时钟示例演示如何使用类似 LCD 的数字显示数字。

数字时钟示例的屏幕截图

此示例还演示了如何使用定期更新小组件。

数字时钟类定义

该类提供了一个时钟小部件,显示时间,小时和分钟之间用闪烁的冒号分隔。我们子类化并实现一个私有插槽,用于更新时钟显示:DigitalClockshowTime()

<span style="color:#404244"><span style="background-color:#3a4055"><span style="color:#ffffff"><span style="color:#ffff55">class</span> <span style="color:#4f9d08">DigitalClock</span> <span style="color:#ffffff">:</span> <span style="color:#ffff55">public</span> <a data-cke-saved-href="https://doc.qt.io/qt-6/qlcdnumber.html" href="https://doc.qt.io/qt-6/qlcdnumber.html"><span style="color:#21be2b">QLCDNumber</span></a>
<span style="color:#ffffff">{</span><span style="color:#ffffff">
    Q_OBJECT

</span><span style="color:#ffff55">public</span><span style="color:#ffffff">:</span>
    <span style="color:#4f9d08">DigitalClock</span><span style="color:#ffffff">(</span><a data-cke-saved-href="https://doc.qt.io/qt-6/qwidget.html" href="https://doc.qt.io/qt-6/qwidget.html"><span style="color:#21be2b">QWidget</span></a> <span style="color:#ffffff">*</span><span style="color:#ffffff">parent </span><span style="color:#ffffff">=</span> <span style="color:#ffff55">nullptr</span><span style="color:#ffffff">);</span>

<span style="color:#ffff55">private</span> <span style="color:#ffffff">slots</span><span style="color:#ffffff">:</span>
    <span style="color:#ffff55">void</span><span style="color:#ffffff"> showTime</span><span style="color:#ffffff">();</span>
<span style="color:#ffffff">};</span></span></span></span>

数字时钟类实现

<span style="color:#404244"><span style="background-color:#3a4055"><span style="color:#ffffff"><span style="color:#4f9d08">DigitalClock</span><span style="color:#ffffff">::</span><span style="color:#4f9d08">DigitalClock</span><span style="color:#ffffff">(</span><a data-cke-saved-href="https://doc.qt.io/qt-6/qwidget.html" href="https://doc.qt.io/qt-6/qwidget.html"><span style="color:#21be2b">QWidget</span></a> <span style="color:#ffffff">*</span><span style="color:#ffffff">parent</span><span style="color:#ffffff">)</span>
    <span style="color:#ffffff">:</span> <a data-cke-saved-href="https://doc.qt.io/qt-6/qlcdnumber.html" href="https://doc.qt.io/qt-6/qlcdnumber.html"><span style="color:#21be2b">QLCDNumber</span></a><span style="color:#ffffff">(</span><span style="color:#ffffff">parent</span><span style="color:#ffffff">)</span>
<span style="color:#ffffff">{</span><span style="color:#ffffff">
    setSegmentStyle</span><span style="color:#ffffff">(</span><span style="color:#4f9d08">Filled</span><span style="color:#ffffff">);</span>

    <a data-cke-saved-href="https://doc.qt.io/qt-6/qtimer.html" href="https://doc.qt.io/qt-6/qtimer.html"><span style="color:#21be2b">QTimer</span></a> <span style="color:#ffffff">*</span><span style="color:#ffffff">timer </span><span style="color:#ffffff">=</span> <span style="color:#ffff55">new</span> <a data-cke-saved-href="https://doc.qt.io/qt-6/qtimer.html" href="https://doc.qt.io/qt-6/qtimer.html"><span style="color:#21be2b">QTimer</span></a><span style="color:#ffffff">(</span><span style="color:#ffff55">this</span><span style="color:#ffffff">);</span><span style="color:#ffffff">
    connect</span><span style="color:#ffffff">(</span><span style="color:#ffffff">timer</span><span style="color:#ffffff">,</span> <span style="color:#ffffff">&</span><a data-cke-saved-href="https://doc.qt.io/qt-6/qtimer.html" href="https://doc.qt.io/qt-6/qtimer.html"><span style="color:#21be2b">QTimer</span></a><span style="color:#ffffff">::</span><span style="color:#ffffff">timeout</span><span style="color:#ffffff">,</span> <span style="color:#ffff55">this</span><span style="color:#ffffff">,</span> <span style="color:#ffffff">&</span><span style="color:#4f9d08">DigitalClock</span><span style="color:#ffffff">::</span><span style="color:#ffffff">showTime</span><span style="color:#ffffff">);</span><span style="color:#ffffff">
    timer</span><span style="color:#ffffff">-</span><span style="color:#ffffff">></span><span style="color:#ffffff">start</span><span style="color:#ffffff">(</span><span style="color:#ff55ff">1000</span><span style="color:#ffffff">);</span><span style="color:#ffffff">

    showTime</span><span style="color:#ffffff">();</span><span style="color:#ffffff">

    setWindowTitle</span><span style="color:#ffffff">(</span><span style="color:#ffffff">tr</span><span style="color:#ffffff">(</span><span style="color:#aaaaaa">"Digital Clock"</span><span style="color:#ffffff">));</span><span style="color:#ffffff">
    resize</span><span style="color:#ffffff">(</span><span style="color:#ff55ff">150</span><span style="color:#ffffff">,</span> <span style="color:#ff55ff">60</span><span style="color:#ffffff">);</span>
<span style="color:#ffffff">}</span></span></span></span>

在构造函数中,我们首先更改 LCD 编号的外观。该样式生成用前景色(通常为黑色)填充的凸起段。我们还设置了一个一秒计时器来跟踪当前时间,并将其()信号连接到专用插槽,以便显示每秒更新一次。然后,我们调用插槽;如果没有此调用,在显示时间之前,启动时会有一秒钟的延迟。showTime()showTime()

<span style="color:#404244"><span style="background-color:#3a4055"><span style="color:#ffffff"><span style="color:#ffff55">void</span> <span style="color:#4f9d08">DigitalClock</span><span style="color:#ffffff">::</span><span style="color:#ffffff">showTime</span><span style="color:#ffffff">()</span>
<span style="color:#ffffff">{</span>
    <a data-cke-saved-href="https://doc.qt.io/qt-6/qtime.html" href="https://doc.qt.io/qt-6/qtime.html"><span style="color:#21be2b">QTime</span></a><span style="color:#ffffff"> time </span><span style="color:#ffffff">=</span> <a data-cke-saved-href="https://doc.qt.io/qt-6/qtime.html" href="https://doc.qt.io/qt-6/qtime.html"><span style="color:#21be2b">QTime</span></a><span style="color:#ffffff">::</span><span style="color:#ffffff">currentTime</span><span style="color:#ffffff">();</span>
    <a data-cke-saved-href="https://doc.qt.io/qt-6/qstring.html" href="https://doc.qt.io/qt-6/qstring.html"><span style="color:#21be2b">QString</span></a><span style="color:#ffffff"> text </span><span style="color:#ffffff">=</span><span style="color:#ffffff"> time</span><span style="color:#ffffff">.</span><span style="color:#ffffff">toString</span><span style="color:#ffffff">(</span><span style="color:#aaaaaa">"hh:mm"</span><span style="color:#ffffff">);</span>
    <span style="color:#ffff55">if</span> <span style="color:#ffffff">((</span><span style="color:#ffffff">time</span><span style="color:#ffffff">.</span><span style="color:#ffffff">second</span><span style="color:#ffffff">()</span> <span style="color:#ffffff">%</span> <span style="color:#ff55ff">2</span><span style="color:#ffffff">)</span> <span style="color:#ffffff">=</span><span style="color:#ffffff">=</span> <span style="color:#ff55ff">0</span><span style="color:#ffffff">)</span><span style="color:#ffffff">
        text</span><span style="color:#ffffff">[</span><span style="color:#ff55ff">2</span><span style="color:#ffffff">]</span> <span style="color:#ffffff">=</span> <span style="color:#aaaaaa">' '</span><span style="color:#ffffff">;</span><span style="color:#ffffff">
    display</span><span style="color:#ffffff">(</span><span style="color:#ffffff">text</span><span style="color:#ffffff">);</span>
<span style="color:#ffffff">}</span></span></span></span>

每当需要更新时钟显示时,都会调用该插槽。showTime()

当前时间将转换为格式为“hh:mm”的字符串。当 () 是偶数时,字符串中的冒号将替换为空格。这使得结肠每隔一秒出现和消失一次。

最后,我们调用 () 来更新小部件。

 欢迎大家加入编程交流群
Qt编程交流群 57634222
C++编程交流群 910854771
编程交流群 241531722

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

亭台六七座

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值