Qt示例 | 数字时钟 Digital Clock Example

670 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第30天,点击查看活动详情

注:示例为Qt 5.1.1中的示例。
本文旨在剖析Qt示例的源码,总结函数使用方法以及编程思想,提高自己的编程能力。

示例运行效果:

1.gif

这个示例实现了使用QTimer定期更新小部件的一个数字时钟。

文件目录:

image.png

主要包含一个main.cpp和一个数字时钟窗口类。

具体实现:

main函数:

image.png

将数字时钟窗口显示出来。

DigitalClock类:

image.png

只有一个构造函数和一个showTime()函数。DigitalClock类提供了一个时钟小部件,显示时间,用一个闪烁的冒号分隔小时和分钟。通过子类化QLCDNumber并实现showTime()的私有槽函数来更新时钟的显示。

构造函数:

image.png

  • 在构造函数中,首先设置LCD数字的外观。
  • 还设置了一个一秒钟间隔的计时器来跟踪当前时间,并将其timeout()信号连接到私有的showTime()槽函数,以便显示每秒钟更新一次。
  • 然后,调用showTime()槽函数;如果没有这个调用,在显示时间之前,启动时会有一秒钟的延迟。
  • 还设置了窗口的标题和大小。

QLCDNumber::Filled 样式产生用前景色(通常是黑色)填充的凸起部分。

showTime函数:

image.png

只要时钟显示需要更新,就会调用showTime()槽函数。
槽函数中将当前时间转换为格式为“hh:mm”的字符串。当QTime::second()为偶数时,字符串中的冒号将被替换为空格。这使得冒号每隔一秒出现和消失一次。
最后,调用QLCDNumber::display()来更新小部件。

display: 此属性保存显示的值。此属性对应于LCDNumber显示的当前值。如果显示的值不是数字,则该属性的值为0。默认情况下,此属性包含值0。

currentTime: 返回系统时钟所报告的当前时间。注意,准确性取决于底层操作系统的准确性;并非所有系统都能提供1毫秒的精度。

toString: 以字符串形式返回时间。format参数决定结果字符串的格式。

一点感想:

  • 充分利用Qt提供的控件以及控件提供的函数。
  • 可以对一些计算技巧进行总结和整理,比如这里的模二运算。还有类似于四舍五入运算等简易写法。