持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第30天,点击查看活动详情
注:示例为Qt 5.1.1中的示例。
本文旨在剖析Qt示例的源码,总结函数使用方法以及编程思想,提高自己的编程能力。
示例运行效果:
这个示例实现了使用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提供的控件以及控件提供的函数。
- 可以对一些计算技巧进行总结和整理,比如这里的模二运算。还有类似于四舍五入运算等简易写法。