这篇文章主要讲解了Qt绘制时钟的代码解析,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。
创新互联从2013年开始,先为泰顺等服务建站,泰顺等地企业,进行企业商务咨询服务。为泰顺企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。简述
QPainter 提供了 2D 绘图的常用操作,QTimer 提供了定时器功能,将两者相结合,可以做出很多的自定义特效绘制。
下面,来实现一个每天都要接触的东西 - 时钟。包含了常见的所有功能:时针、分针、秒针。
实现方式
由于时钟是妙级更新的,所以我们需要定时刷新,时钟本身则使用之前讲过的 QPainter 来进行绘制。
使用 QTimer 定时刷新,设置超时时间为 1000 毫秒(1 秒)。
绘制时钟,通过 paintEvent() 实现,包括:时针、分针、秒针、及面板、表盘等。
绘制小时对应的文本,文本区域通过 textRectF() 计算。
示例
效果
源码
首先,我们构造一个定时器 QTimer,连接其超时信号 timeout() 到槽函数 update(),当调用 update() 时,系统会自动通知当前界面进行重绘(paintEvent())。
ClockWidget::ClockWidget(QWidget *parent) : QWidget(parent) { ... // 构造定时器,设置超时为 1 秒 QTimer *timer = new QTimer(this); connect(timer, SIGNAL(timeout()), this, SLOT(update())); timer->start(1000); ... }
另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。