qt 时钟设计(随界面大小变动自适应)

demo链接:https://download.csdn.net/download/weixin_39841821/10568854

一、 需求

a) 画出一个圆形表盘,包含三角形的时针、分针、秒针,以及上方的刻度,加上名字
b) 在窗体发生变化的时候,时钟能够根据窗体大小自动调整
c) 时间能够显示当前时间

二、 实现:通过在.h重声明void paintEvent(QPaintEvent ) 和类中重写void Widget::paintEvent(QPaintEvent )

a)  利用QPainter类中的:
    1)  translate(int x,int y)把中心点作为(002)  scale(int x,inty)设置缩放比例     //这样就会随着窗口变化Painter画出的图像也发生变化
    3)  drawEllipse(int,int,int,int)设置起点坐标和长轴和短轴
    4)  drawConvexPolygon(QPoint[],int)
    5)  setPen(pen)定义线段类型
    6)  setBrush(QColor)定义填充颜色

利用QPoint定义3个3点坐标,再通过drawConvexPolygon划出不规则多边形既三角形
通过drawLine画出最右方的直线,通过rotate每旋转30°画一次,画12次,形成短刻度
通过drawLine画出最右方的直线,通过rotate每旋转6°画一次,画60次,形成长刻度

b)  把画的方法都写scale下方,那么每一次窗口变化都会记录上一次情况,然后按照比例缩放

c)通过定义时钟中断,Timer t.start(1000), 然后连接信号timerout() 和 update() , 然后每一次中断都会重绘一         次时钟界面
   计算时钟应该再的角度:

时钟每个小时旋转30°,每分钟旋转30/60°
分针每分钟旋转6°,每小时旋转6/30°
秒钟每秒钟旋转6°

三、 界面效果

这里写图片描述

Ps:在绘制过程中注意使用save()和restore()保持和恢复画笔状态,旋转和平移时对画笔而言的,定义的是画笔的原点点。

猜你喜欢

转载自blog.csdn.net/weixin_39841821/article/details/81254564