123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- #ifndef VPIECHART_H
- #define VPIECHART_H
- /**
- * 饼图控件
- * 1:可设置文字颜色
- * 2:可设置边框颜色
- * 3:可设置颜色集合
- * 4:可设置某个区域是否弹出
- * 5:可设置是否显示百分比
- */
- #include "Common.h"
- #include "VControlObject.h"
- // 扩展属性的组名
- #define PIE_PROPERTY_EX_NAME "饼形图"
- #define PIE_PROPERTY_EX_REFRESHLINK_NAME "索引链接"
- #define PIE_PROPERTY_EX_GROUP_NAME "分块信息"
- #define PIE_PROPERTY_EX_SUBGROUP_NAME "分块"
- #define PIE_PROPERTY_EX_VALUE_NAME "块名"
- #define PIE_PROPERTY_EX_COLOR_NAME "分块颜色"
- #define PIE_PROPERTY_EX_LINK_NAME "数据链接"
- // 块数的属性名称
- #define PIE_SLICE_COUNT_NAME "sliceCount"
- // 饼图属性子分组编号(Pie目前只有一个扩展属性组)
- #define GROUP_INDEX_PIE 0
- /// <summary>
- /// 饼形图的封装类
- /// </summary>
- class VPieChart : public QWidget, public VControlObject
- {
- Q_OBJECT
- Q_PROPERTY(QRect geometry READ geometry WRITE setGeometry)
- Q_PROPERTY(QColor textColor READ getTextColor WRITE setTextColor)
- Q_PROPERTY(QColor borderColor READ getBorderColor WRITE setBorderColor)
- Q_PROPERTY(int sliceCount READ getSliceCount WRITE setSliceCount)
- public:
- VPieChart(
- QWidget* parent,
- const QPoint& pos,
- const QSize& size,
- CONTROL_PROPERTY* pProperty = nullptr,
- CONTROL_PROPERTY_EX* pPropertyEx = nullptr
- );
- ~VPieChart();
- public:
- //设置文字颜色+边框颜色
- void setTextColor(const QColor& textColor);
- QColor getTextColor() const;
- // 设置边框颜色
- void setBorderColor(const QColor& borderColor);
- QColor getBorderColor() const;
- // 设置块数
- void setSliceCount(const int& count);
- // 获取当前块数
- int getSliceCount();
- // 设置分块文字
- void updateSliceTitle(const QString& newValue, const int nIndex);
- // 设置分块颜色
- void updateSliceColor(QColor newValue, const int nIndex);
- // 设置分块数值
- void updateSliceValue(const int& newValue, const int nIndex);
- // 更新块属性数量(虚函数)
- virtual void updateExPropertyCount(const int fixCount, const QString& strPropName);
- // 修改扩展属性(虚函数)
- virtual void changeExProperties(QString strValueTitle, const QVariant& newValue);
- protected:
- void paintEvent(QPaintEvent *);
- void drawPie(QPainter *painter);
- private:
- bool explodedAll; //是否全部展开
- int explodedIndex; //展开的索引
- bool showPercent; //是否显示百分比
- double holeSize; //空心占比
- QColor m_TextColor; // 文字颜色
- QColor m_BorderColor; // 边框颜色
- QVector<QColor> m_defaultColors; // 颜色集合
- // QVector<QString> m_Titles; // 标签集合
- QVector<double> m_Values; // 值集合(如果是处于预览状态,则数值全为1)
- private:
- // 获取总值
- double getSumValue();
- // 根据偏移值获取偏移点坐标
- QPoint getOffsetPoint(double angel, int offset = 6);
- // 初始化扩展属性
- void initPropertyEx();
- // 初始化UI风格
- void initStyle();
- //// 2021-12-30修改,设置饼图的预览风格(每块均等分,颜色随机)
- //void previewPie();
- // 初始化一个扩展属性组
- void initSubGroup(PROPERTY_EX_SUBGROUP& subGroup, int nIndex, int nSubGroupID);
- // 设置颜色集合
- void setColors(const QVector<QColor>& colors);
- //初始化饼图
- void initPie();
- ////添加饼图数据
- //void appendPie(const QString &label, double value, const QString &tip = "");
- ////设置数据
- //void setDataPie();
- //重新设置百分比
- void loadPercent();
- ////清除饼图
- //void clearPie();
- //设置空心占比
- void setHoleSize(double holeSize);
- public Q_SLOTS:
- // 设置是否全部展开+展开的索引
- void setExplodedAll(bool explodedAll);
- void setExplodedIndex(int index);
- // 设置是否启用默认颜色
- void setDefaultColor(bool defaultColor);
- };
- #endif // VPIECHART_H
|