一、饼图
饼图可以表现各分量占总量的关系,以及各分量之间的大小对比关系。
二、Qt饼图的基本元素
基本对象元素,QChartView,QChart,QPieSeries,QPieSlice
- QChartView :is a standalone widget that can display charts.
QChartView是绘制chart图像的控件。
- QChart: is a class manages the graphical representation of the chart’s series, legends, and axes.
QChart是管理数据图像元素的类,这些元素包括数据、图例、坐标轴等。
- QPieSeires: is a class presents data in pie charts
QPieSeires是饼图切片数据的集合。
- QPieSlice: is a class represents a single slice in a pie series.
QPieSlice 是单个切片的数据。
注: 含有多个切片的series 加入到一个Qchart中以后,不会画出多个饼图,而是把这些数据集合成一个饼图的series数据。
三、饼图创建
- 添加Qt Chart模块和依赖
.pro文件添加 chart模块
// .pro文件添加 chart模块
QT += core gui charts
// 头文件添加QtChart 相关的依赖依赖和QPieSice
#include <QtCharts>
#include <QChartView>
#include <QPieSeries>
#include <QPieSlice>
- 创建QPieSlice切片对象
//QPieSlice(QString label, qreal value, QObject *parent = nullptr)
QPieSlice *slice0 =new QPieSlice("hlf",11);
QPieSlice *slice1 =new QPieSlice("sun",12);
QPieSlice *slice2 =new QPieSlice("zheng",15);
- 创建QPieSeries 对象,添加切片对象QPieSlice
//QPieSeries(QObject *parent = nullptr)
QPieSeries *series= new QPieSeires();
//bool append(QPieSlice *slice)
series->append(slice0);
series->append(slice1);
series->append(slice2);
- 创建QChart对象,添加Series
//QChart::QChart(QGraphicsItem *parent = nullptr, Qt::WindowFlags wFlags = Qt::WindowFlags())
//void QChart::addSeries(QAbstractSeries *series)
QChart *chart= new QChart();
chart->addSeries(series);
- 创建QChartView对象,设定Chart对象
QChartView chartviewPie= new QChartView();
QChartView chartviewPie->setChart(chart);
- 把QchartView添加到界面的一个Widget对象
//void QWidget::setParent(QWidget *parent, Qt::WindowFlags f)
chartviewPie->setParent(ui->pieChartView);
pieChartView是界面上定义的一个QWidget组件
四、饼图属性的修改
比较形象的测试可以参考Qt Chart的示例piechartcustomization
4.1 Chart 整体属性
-
animationDuration : int 动画时间间隔
-
animationEasingCurve : QEasingCurve 加速度模式
– 创建函数:QEasingCurve(QEasingCurve::Type type = Linear)
– 枚举类型有:enum Type { Linear, InQuad, OutQuad, InOutQuad, …, Custom } -
animationOptions : QChart::AnimationOptions 动画类型
– QChart::NoAnimation 0x0 默认值
– QChart::GridAxisAnimations 0x1 格栅动画
– QChart::SeriesAnimations 0x2 切片动画
– QChart::AllAnimations 0x3 所有动画 具体区别自己尝试 -
backgroundRoundness : qreal 背景圆环的直径
-
backgroundVisible : bool 背景可见选项 还有背景圆的刷子颜色等。
-
chartType : const QChart::ChartType chart类型
– QChart::ChartTypeUndefined 0 无定义
– QChart::ChartTypeCartesian 1 卡迪尔坐标系
– QChart::ChartTypePolar 2 极坐标系 -
dropShadowEnabled : bool 阴影选项
-
locale : QLocale 本地化设置
-
localizeNumbers : bool 本地化设置选项
-
margins : QMargins 绘图需与到绘图方框的距离
-
plotArea : QRectF 绘图所属的方框
-
plotAreaBackgroundVisible : bool 绘图区域背景可见
-
theme : QChart::ChartTheme 绘画风格主题,风格主题的选择如下:
– QChart::ChartThemeLight 0
– QChart::ChartThemeBlueCerulean 1
– QChart::ChartThemeDark 2
– QChart::ChartThemeBrownSand 3
– QChart::ChartThemeBlueNcs 4
– QChart::ChartThemeHighContrast 5
– QChart::ChartThemeBlueIcy 6
– QChart::ChartThemeQt 7 -
title : QString 绘画的标题
4.2 QPieSeries数据对象的属性
- count : const int 切片的数量 小于1的浮点数
- endAngle : qreal ;终止角度
- holeSize : qreal 中间圆环大小 小于1的浮点数
- horizontalPosition : qreal 水平位置 小于1的浮点数
- size : qreal 饼图的尺寸 小于1的浮点数
- startAngle : qreal 开始角度
- sum : const qreal 切片的数值总和
- verticalPosition : qreal 垂直位置 小于1的浮点数
4.3 QPieSlice 切片相关属性
- angleSpan : const qreal 计算得到的切片角度
- borderColor : QColor 边框颜色
- borderWidth : int 边框宽度
- brush : QBrush 切片的颜色
- color : QColor 切片颜色
- explodeDistanceFactor : qreal 爆炸效果距离
- exploded: bool 爆炸效果选项
- label : QString 切片标识
- labelArmLengthFactor : qreal 标签外部显示时线条长度
- labelBrush :QBrush 标签颜色
- labelColor : QColor 标签颜色
- labelFont : QFont 标签字体
- labelPosition :LabelPosition 标签位置
- labelVisible : bool 标签显示选项
- pen : QPen
- percentage : const qreal 计算所的切片占比
- startAngle : const qreal 切片起始角度
- value : qreal 切片的数值