自定义组件_滚动横幅&弹窗&对话框&字体图标等
自定义组件_圆弧进度条
自定义组件_水波进度条
自定义组件_多彩仪表盘
自定义组件_通用仪表盘


仓库

个性
  • 可设置范畴值
  • 可设置大刻度数量,小刻度数量
  • 可设置开始旋转角度、完结旋转角度
  • 可设置是否启用动画、动画特效及每刻度动画持续时间
  • 可设置外圆背景、内圆背景、提醒指针、刻度尺、刻度值、提醒文字色彩
  • 可设置三色刻度占用比例
  • 可设置圆环款式,三色圆环、以后圆环
  • 可设置指示器款式,球形、指针形、圆角指针、三角形指示器
  • 自适应窗体拉伸、刻度尺和文字主动缩放
#ifndef COLORDASHBOARD_H#define COLORDASHBOARD_H#include <QColor>#include <QPropertyAnimation>#include <QWidget>/* 多彩仪表盘自定义控件 实现的性能 * 1. 可设置范畴值 * 2. 可设置大刻度数量,小刻度数量 * 3. 可设置开始旋转角度、完结旋转角度 * 4. 可设置是否启用动画、动画特效及每刻度动画持续时间 * 5. 可设置外圆背景、内圆背景、提醒指针、刻度尺、刻度值、提醒文字色彩 * 6. 可设置三色刻度占用比例 * 7. 可设置圆环款式,三色圆环、以后圆环 * 8. 可设置指示器款式,球形、指针形、圆角指针、三角形指示器 * 8. 自适应窗体拉伸、刻度尺和文字主动缩放 */class ColorDashboard : public QWidget{    Q_OBJECT    Q_ENUMS(PieStyle)    Q_ENUMS(PointerStyle)    Q_PROPERTY(int minValue               READ getMinValue               WRITE setMinValue)    Q_PROPERTY(int maxValue               READ getMaxValue               WRITE setMaxValue)    Q_PROPERTY(int scaleMajor             READ getScaleMajor             WRITE setScaleMajor)    Q_PROPERTY(int scaleMinor             READ getScaleMinor             WRITE setScaleMinor)    Q_PROPERTY(int startAngle             READ getStartAngle             WRITE setStartAngle)    Q_PROPERTY(int endAngle               READ getEndAngle               WRITE setEndAngle)    Q_PROPERTY(int animationStepTime      READ getAnimationStepTime      WRITE setAnimationStepTime)    Q_PROPERTY(QColor outerCircleColor    READ getOuterCircleColor       WRITE setOuterCircleColor)    Q_PROPERTY(QColor innerCircleColor    READ getInnerCircleColor       WRITE setInnerCircleColor)    Q_PROPERTY(QColor m_pieColorStart     READ getPieStartColor          WRITE setPieStartColor)    Q_PROPERTY(QColor m_pieColorMid       READ getPieMidColor            WRITE setPieMidColor)    Q_PROPERTY(QColor m_pieColorEnd       READ getPieEndColor            WRITE setPieEndColor)    Q_PROPERTY(QColor scaleColor          READ getScaleColor             WRITE setScaleColor)    Q_PROPERTY(QColor scaleNumColor       READ getScaleNumColor          WRITE setScaleNumColor)    Q_PROPERTY(QColor pointerColor        READ getPointerColor           WRITE setPointerColor)    Q_PROPERTY(QColor centerCirleColor    READ getCenterCircleColor      WRITE setCenterCircleColor)    Q_PROPERTY(QColor textColor           READ getTextColor              WRITE setTextColor)    Q_PROPERTY(bool   isOverlayVisible    READ isOverlayVisible          WRITE setOverlayVisible)    Q_PROPERTY(QColor overlayColor        READ getOverlayColor           WRITE setOverlayColor)    Q_PROPERTY(PieStyle     pieStyle      READ getPieStyle               WRITE setPieStyle)    Q_PROPERTY(PointerStyle pointerStyle  READ getPointerStyle           WRITE setPointerStyle)    Q_PROPERTY(QEasingCurve::Type easingCurveType READ getEasingCurve    WRITE setEasingCurve)    Q_PROPERTY(int curValue               READ getCurValue               WRITE updateValue)public:    enum PieStyle {        PieStyle_Three = 0u,                // 三色圆环        PieStyle_Current                    // 以后圆环    };    enum PointerStyle {        PointerStyle_Ball = 0u,             // 圆指示器        PointerStyle_Indicator,             // 指针指示器        PointerStyle_IndicatorR,            // 圆角指针指示器        PointerStyle_Triangle               // 三角指示器    };    explicit ColorDashboard(QWidget *parent = nullptr);    ~ColorDashboard();    int getMinValue()                      const;    int getMaxValue()                      const;    int getValue()                         const;    int getScaleMajor()                    const;    int getScaleMinor()                    const;    int getStartAngle()                    const;    int getEndAngle()                      const;    int getAnimationStepTime()             const;    QColor getOuterCircleColor()           const;    QColor getInnerCircleColor()           const;    QColor getPieStartColor()              const;    QColor getPieMidColor()                const;    QColor getPieEndColor()                const;    QColor getScaleColor()                 const;    QColor getScalCircleColor()            const;    QColor getScaleNumColor()              const;    QColor getPointerColor()               const;    QColor getCenterCircleColor()          const;    QColor getTextColor()                  const;    bool isOverlayVisible()                const;    QColor getOverlayColor()               const;    PieStyle getPieStyle()                 const;    PointerStyle getPointerStyle()         const;    QEasingCurve::Type getEasingCurve()    const;public slots:    void setRange(int minValue, int maxValue);                  // 设置范畴值    void setMinValue(int minValue);                             // 设置最小值    void setMaxValue(int maxValue);                             // 设置最大值    void setValue(int value);                                   // 设置目标值    void setScaleMajor(int scaleMajor);                         // 设置主刻度数量    void setScaleMinor(int scaleMinor);                         // 设置小刻度数量    void setAngleRange(int startAngle, int endAngle);           // 设施旋转角度范畴    void setStartAngle(int startAngle);                         // 设置开始旋转角度    void setEndAngle(int endAngle);                             // 设置完结旋转角度    void setAnimationStepTime(int msec);                        // 设置每刻度动画持续时间    void setOuterCircleColor(const QColor &outerCircleColor);   // 设置外圆色彩    void setInnerCircleColor(const QColor &innerCircleColor);   // 设置内圆色彩    // 设置饼圆三种色彩    void setPieStartColor(const QColor &scaleStartColor);    void setPieMidColor(const QColor &scaleMidColor);    void setPieEndColor(const QColor &scaleEndColor);    void setScaleColor(const QColor &scaleColor);               // 设置刻度色彩    void setScalCircleColor(const QColor &scaleCircleColor);    // 设置刻度圆色彩    void setScaleNumColor(const QColor &scaleNumColor);         // 设置刻度值色彩    void setPointerColor(const QColor &pointerColor);           // 设置指针色彩    void setCenterCircleColor(const QColor &centerCircleColor); // 设置核心圆色彩    void setTextColor(const QColor &textColor);                 // 设置提醒文本色彩    void setOverlayVisible(bool overlay);                       // 设置是否显示遮蔽罩    void setOverlayColor(const QColor &overlayColor);           // 设置遮蔽罩色彩    void setPieStyle(PieStyle pieStyle);                        // 设置饼图央视    void setPointerStyle(PointerStyle pointerStyle);            // 设置指针款式    void setEasingCurve(QEasingCurve::Type type);               // 设置指针动画类型protected:    void paintEvent(QPaintEvent *e) override;    inline void drawGenericCircle(QPainter *painter, double radius, const QColor &cokor);    void drawOuterCircle(QPainter *painter);    void drawScaleCircle(QPainter *painter);    void drawPieCircle(QPainter *painter);    void drawThreePieCircle(QPainter *painter, double radius);    void drawCurrentPieCircle(QPainter *painter, double radius);    void drawInnerCircle(QPainter *painter);    void drawPointerCircle(QPainter *painter);    void drawCenterCircel(QPainter *painter);    void drawScaleNum(QPainter *painter);    void drawScale(QPainter *painter);    void drawOverlay(QPainter *painter);    void drawPointer(QPainter *painter);    void drawPointerBall(QPainter *painter);    void drawPointerIndicator(QPainter *painter);    void drawPointerIndicatorR(QPainter *painter);    void drawPointerTriangle(QPainter *painter);    void drawText(QPainter *painter);    void updateValue(int value);    int getCurValue() const;signals:    void valueChanged(int value);    void finished();private:    double m_radius           = 0;                                  // 仪表盘半径    QColor m_outerCircleColor = QColor(80, 80, 80);                 // 外圆色彩    QColor m_scaleCircleColor = QColor(60, 60, 60);                 // 刻度圆色彩    QColor m_innerCircleColor = QColor(100, 100, 100);              // 内圆色彩    QColor m_centerCirleColor = QColor(250, 250, 250);              // 核心圆色彩    QColor m_pointerColor     = QColor(223,105,105);                // 指针色彩    QColor m_pieColorStart    = QColor(24,189,155);                 // 饼圆开始色彩    QColor m_pieColorMid      = QColor(218,218,0);                  // 饼圆两头色彩    QColor m_pieColorEnd      = QColor(255,107,107);                // 饼圆完结色彩    QColor m_scaleNumColor    = QColor(255,255,255);                // 刻度字体色彩    QColor m_scaleColor       = QColor(255,255,255);                // 刻度色彩    QColor m_overlayColor     = QColor(255,255,255);                // 遮避罩色彩    QColor m_textColor        = QColor(0,0,0);                      // 提醒文本色彩    PieStyle m_pieStyle         = PieStyle_Current;                 // 饼格调    PointerStyle m_pointerStyle = PointerStyle_Triangle;            // 指示器款式    int m_value               = 0;                                  // 表盘设定值    int m_curValue            = 0;                                  // 表盘以后值    int m_minValue            = 0;                                  // 表盘最小值    int m_maxValue            = 240;                                // 表盘最大值    int m_scaleMajor          = 10;                                 // 大刻度数量    int m_scaleMinor          = 5;                                  // 小刻度数量        【如:总刻度数量 = scaleMajor * scaleMinor】    int m_startAngle          = 45;                                 // 起始旋转角度    int m_endAngle            = 315;                                // 完结旋转角度    bool m_isOverlayVisible   = true;                               // 是否显示遮蔽罩    QPropertyAnimation m_animation;                                 // 指针属性动画    int m_animationStepTime   = 50;                                 // 每刻度动画持续时间    QEasingCurve::Type m_easingCurveType = QEasingCurve::OutQuad;   // 指针动画弛缓曲线类型};#endif // COLORDASHBOARD_H