自定义组件_滚动横幅&弹窗&对话框&字体图标等
自定义组件_圆弧进度条
自定义组件_水波进度条
自定义组件_多彩仪表盘
自定义组件_通用仪表盘
仓库
个性
- 可设置范畴值
- 可设置大刻度数量,小刻度数量
- 可设置开始旋转角度、完结旋转角度
- 可设置是否启用动画、动画特效及每刻度动画持续时间
- 可设置外圆背景、内圆背景、提醒指针、刻度尺、刻度值、提醒文字色彩
- 可设置三色刻度占用比例
- 可设置圆环款式,三色圆环、以后圆环
- 可设置指示器款式,球形、指针形、圆角指针、三角形指示器
- 自适应窗体拉伸、刻度尺和文字主动缩放
#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 ¢erCircleColor); // 设置核心圆色彩 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