Qt 示例 | 数字时钟 Digital Clock Example

示例运行效果:

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

主要包含一个 main.cpp 和一个数字时钟窗口类。
具体实现:
main 函数:

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

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

在构造函数中,首先设置 LCD 数字的外观。
还设置了一个一秒钟间隔的计时器来跟踪当前时间,并将其 timeout()信号连接到私有的 showTime()槽函数,以便显示每秒钟更新一次。
然后,调用 showTime()槽函数;如果没有这个调用,在显示时间之前,启动时会有一秒钟的延迟。
还设置了窗口的标题和大小。
QLCDNumber::Filled 样式产生用前景色(通常是黑色)填充的凸起部分。
showTime 函数:

只要时钟显示需要更新,就会调用 showTime()槽函数。
槽函数中将当前时间转换为格式为“hh:mm”的字符串。当 QTime::second()为偶数时,字符串中的冒号将被替换为空格。这使得冒号每隔一秒出现和消失一次。
最后,调用 QLCDNumber::display()来更新小部件。
display: 此属性保存显示的值。此属性对应于 LCDNumber 显示的当前值。如果显示的值不是数字,则该属性的值为 0。默认情况下,此属性包含值 0。
currentTime: 返回系统时钟所报告的当前时间。注意,准确性取决于底层操作系统的准确性;并非所有系统都能提供 1 毫秒的精度。
toString: 以字符串形式返回时间。format 参数决定结果字符串的格式。
一点感想:
充分利用 Qt 提供的控件以及控件提供的函数。
可以对一些计算技巧进行总结和整理,比如这里的模二运算。还有类似于四舍五入运算等简易写法。
版权声明: 本文为 InfoQ 作者【YOLO.】的原创文章。
原文链接:【http://xie.infoq.cn/article/d50d40fc15312ab68f19052f0】。未经作者许可,禁止转载。
评论