数字时钟 Digital Clock Example

举报
黑兔子 发表于 2022/09/15 13:31:23 2022/09/15
【摘要】 这个示例实现了使用QTimer定期更新小部件的一个数字时钟。主要的实现思路是使用Qt自带的时钟部件,通过重写DigitalClock的showTime()方法,来带到我们想要让他显示时间的目的,在这里可以指定时间显示的格式等。

示例运行效果:

1.gif

这个示例实现了使用QTimer定期更新小部件的一个数字时钟。主要的实现思路是使用Qt自带的时钟部件,通过重写DigitalClock的showTime()方法,来带到我们想要让他显示时间的目的,在这里可以指定时间显示的格式等。

文件目录:

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提供的控件以及控件提供的函数。
  • 可以对一些计算技巧进行总结和整理,比如这里的模二运算。还有类似于四舍五入运算等简易写法。
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。