本系列主要使用Qt painter来实现一些基础控件。主要是对平时自行编写的一些自定义控件的总结。c++
为了简洁。低耦合,咱们尽可能不使用图片,qrc,ui等文件,而只使用c++的.h和.cpp文件。git
因为我的水平有限,学习Qt时间不长,因此代码中出现BUG,不够优雅以及有待改进部分,还请见谅和提出意见。github
本项目全部代码在Qt5.10以上均测试经过,理论上Qt 5版本应该都支持。学习
本系列全部程序,已经放在了github的项目上,项目地址:https://github.com/LOMOoO/CustomControls-Qt测试
(一) 圆形进度条动画
示例图如上,该自定义控件主要特色有:ui
1.纯QPaint绘制,不包括图片等文件;this
2.多种自定义控制,很是灵活;spa
3.可以自适应大小,不须要手动调整;3d
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上的源代码