CustomPieChart.h 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #ifndef CUSTOMPIECHART_H
  2. #define CUSTOMPIECHART_H
  3. #include <QPainter>
  4. #include <QPaintEvent>
  5. #include <QVBoxLayout>
  6. #include <QWidget>
  7. #include <QLabel>
  8. #include <QtMath>
  9. class CustomPieChart : public QWidget
  10. {
  11. Q_OBJECT
  12. public:
  13. explicit CustomPieChart(QWidget *parent = nullptr);
  14. explicit CustomPieChart(const QString &title, const QString &tag, const int &data, const QColor &color,
  15. QWidget *parent = nullptr);
  16. explicit CustomPieChart(const QString &title, QStringList tagList, QList<double> dataList, QList<QColor> colorList,
  17. QWidget *parent = nullptr);
  18. ~CustomPieChart();
  19. void addSlice(const QString &tag, const int &data, const QColor &color); // 增加切片的函数
  20. void setSeries(QStringList tagList, QList<double> value, QList<QColor> colorList); // 设置系列的函数
  21. void setTitleFont(const QFont &font); // 设置标题字体的函数
  22. void setTagFont(const QFont &font); // 设置标签字体的函数
  23. void setLegendFont(const QFont &font); // 设置说明字体的函数
  24. void setSumFont(const QFont &font); // 设置总数字体的函数
  25. void setSumTextFont(const QFont &font); // 设置"总数"文本字体的函数
  26. void setGlobalFont(const QFont &font); // 设置全局字体的函数
  27. void setRingSize(const double &ringSize); // 设置圆环大小的函数
  28. private:
  29. int total; // 总的标签数
  30. double sum; // 标签的总量
  31. QFont globalFont; // 全局字体
  32. QFont titleFont; // 标题字体
  33. QFont tagFont; // 标签字体
  34. QFont legendFont; // 说明字体
  35. QFont sumFont; // 总数文本字体
  36. QFont sumTextFont; // "总数"文本字体
  37. bool isSetTitleFont; // 判断标题是否设置字体
  38. bool isSetTagFont; // 判断标签是否设置字体
  39. bool isSetLegendFont; // 判断说明是否设置字体
  40. bool isSetSumFont; // 判断总数是否设置字体
  41. bool isSetSumTextFont; // 判断"总数"是否设置字体
  42. double fontSize; // 字体大小
  43. double ringSize; // 圆环
  44. QWidget *titleWidget; // 标题部件
  45. QWidget *pieChartWidget; // 绘制饼图的部件
  46. QString title; // 标题名字
  47. QStringList tagList; // 标签列表
  48. QList<double> dataList; // 数据列表
  49. QList<QColor> colorList; // 颜色列表
  50. bool eventFilter(QObject *widget, QEvent *event); // 过滤绘图事件的函数
  51. void drawPieChart(); // 绘制饼图的函数
  52. void initPieChartWidget(); // 初始化饼图部件的函数
  53. };
  54. #endif // CUSTOMPIECHART_H