Qt自定义控件系列(一) --- 圆形进度条

Posted on 2019-01-15 11:15  LOMOoO  阅读(1762)  评论(0编辑  收藏  举报

本系列主要使用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上的源代码