QCharts-QPieSeries QPieSlice饼图详解

一、饼图

在这里插入图片描述

饼图可以表现各分量占总量的关系,以及各分量之间的大小对比关系。

二、Qt饼图的基本元素

基本对象元素,QChartView,QChart,QPieSeries,QPieSlice

  1. QChartView :is a standalone widget that can display charts.
 QChartView是绘制chart图像的控件。
  1. QChart: is a class manages the graphical representation of the chart’s series, legends, and axes.
QChart是管理数据图像元素的类,这些元素包括数据、图例、坐标轴等。
  1. QPieSeires: is a class presents data in pie charts
QPieSeires是饼图切片数据的集合。
  1. QPieSlice: is a class represents a single slice in a pie series.
    QPieSlice 是单个切片的数据。

跟饼图相关的对象之间的关系

注: 含有多个切片的series 加入到一个Qchart中以后,不会画出多个饼图,而是把这些数据集合成一个饼图的series数据。

三、饼图创建

  1. 添加Qt Chart模块和依赖
    .pro文件添加 chart模块
//	.pro文件添加 chart模块
QT       += core gui  charts

// 头文件添加QtChart 相关的依赖依赖和QPieSice
#include <QtCharts>
#include <QChartView>
#include <QPieSeries>
#include <QPieSlice>
  1. 创建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);
  1. 创建QPieSeries 对象,添加切片对象QPieSlice
//QPieSeries(QObject *parent = nullptr)
QPieSeries *series= new QPieSeires();

//bool append(QPieSlice *slice)
series->append(slice0);
series->append(slice1);
series->append(slice2);
  1. 创建QChart对象,添加Series
//QChart::QChart(QGraphicsItem *parent = nullptr, Qt::WindowFlags wFlags = Qt::WindowFlags())
//void QChart::addSeries(QAbstractSeries *series)
QChart *chart= new QChart();
chart->addSeries(series);
  1. 创建QChartView对象,设定Chart对象
QChartView chartviewPie= new QChartView();
QChartView chartviewPie->setChart(chart);
  1. 把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 切片的数值

  • 2
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值