QT版本:win32 QT Creator5.9.9
在QT中只有横条状的进度条,目前需要使用圆形状进度条显示进度,只能自己设计一个,可以显示圆弧、圆圈和中心文本。
设计思路:
①设计一个QWidget部件类。
提供圆圈的半径属性,根据该属性把该部件初始化为一个长宽相等的正方形部件。
②重载painterEvent()事件。
③在painterEvent事件中定义一个画家、画笔、字体对象,使用drawArc接口绘制圆弧和drawText接口绘制中心文本,最后更新部件。
a、设计时提供画笔、文本类的设置接口,用于设置圆圈和字体的模样,绘制圆时占满窗体,绘制圆弧时要根据圆的路径宽度重新获取半径,防止超出窗体;框定文本的位置,固定范围和居中显示;drawArc方法绘制的圆存在诸多毛刺,需要更改渲染模式。
b、drawArc方法默认是从3点钟方向呈逆时针绘制的,要设计方法固定为0点钟起始,进度方向可调。
④针对上一步为整个工程提供设置接口。
⑤在使用时,与QTimeLine类时间轴结合使用,可以达到动态显示的结果。
待优化:
添加进度条背景
进度条颜色渐变
饼状显示
实验结果:
在使用时可以更改颜色和形状大小,边线大小和文本样式;把该部件动作子部件时,标题框不存在,且背景色为透明色。
代码实现:
arcPainter.h:</