本系列主要使用Qt painter来实现一些基础控件。主要是对平时自行编写的一些自定义控件的总结。
为了简洁。低耦合,我们尽量不使用图片,qrc,ui等文件,而只使用c++的.h和.cpp文件。
由于个人水平有限,学习Qt时间不长,所以代码中出现BUG,不够优雅以及有待改进部分,还请见谅和提出意见。
本项目所有代码在Qt5.10以上均测试通过,理论上Qt 5版本应该都支持。
本系列所有程序,已经放在了github的项目上,项目地址:https://github.com/LOMOoO/CustomControls-Qt
(一) 圆形进度条
示例图如上,该自定义控件主要特点有:
1.纯QPaint绘制,不包括图片等文件;
2.多种自定义控制,非常灵活;
3.能够自适应大小,不需要手动调整;
4.支持动画效果。
该圆形进度条值变化时,会有动画效果,我们还可以使用Qt的动画属性,让动画效果更加优雅,譬如:
QPropertyAnimation* animation=new QPropertyAnimation(this,"_value"); animation->setDuration(500); animation->setStartValue(_value); animation->setEndValue(value); animation->setEasingCurve(QEasingCurve::OutQuad); animation->start();
实际上,我们还可以对显示效果,进行多种自定义设置,例如下
//设置初始角度,顺时针逆时针 void setdefault(int,bool); //设置外圈宽度 void setOutterBarWidth(float); //设置内圈宽度 void setInnerBarWidth(float); //设置范围 void setRange(float, float); //设置当前值 void setValue(float); //设置外圈颜色 void setOutterColor(const QColor&); //设置内圈渐变色 void setInnerColor(const QColor&,const QColor&); void setInnerColor(const QColor&); //设置默认文字颜色 void setDefaultTextColor(const QColor&); //设置控制命令 void setControlFlags(int); //设置显示数字精度 void setPrecision(int); //设置内圈默认文字样式 inline void setInnerDefaultTextStyle(InnerDefaultTextStyle style){_innerDefaultTextStyle=style;}
如果还想进一步控制,你可以选择自行修改源代码。更多部分,请参考github上的源代码