Qt提供的饼图QPieSeries类

简介

饼图系列QPieSeries 由定义为 QPieSlice 对象的切片组成。 切片可以有任何值,因为 QPieSeries 对象计算切片与系列中所有切片总和的百分比,以确定图表中切片的实际大小。

图表上的饼图大小和位置通过使用范围从 0.0 到 1.0 的相对值进行控制,这些与实际的图表矩形有关。

默认情况下,饼图定义为完整饼图,也可以通过设置系列的起始角度和角度跨度来创建部分饼图,一个完整的馅饼是 360 度,其中 0 是 12 点钟。

扩展名词

系列QAbstractSeries

不论是曲线QLineSeries、饼图QPieSeries、柱状图QBarSet还是其他类型的图标,其中展示的内容本质都是数据,在QtCharts(QT图标组件)中,这一组组的数据被称为系列。

例:
饼图示例
对应不同类型的图表Qt提供了不同的系列,上面提到的曲线图QLineSeries、饼图QPieSeries、柱状图QBarSet等,系列处理负责存储访问数据,还提供了数据的绘制方法,比如折线图和曲线图分别对应QLineSeries和QSPLineSeries。

图例QLegend

QLegend类显示图表的图例。

图例是显示图表图例的图形对象。当序列发生变化时,QChart会更新图例状态。默认情况下,图例是附加在图表上的,但是可以将图例分离,使其独立于图表布局。图例对象不能被创建或删除,但是可以通过QChart类引用它们。

例上图中的图例:
图例

图表QChart

QChart类管理图表系列(series)、图例(legend)和轴(axes)的图形表示。

QChart是一个组织、管理的角色。我们可以通过QChart获取坐标轴对象、数据系列对象、图例等,并且可以设置图表QChart的主题、背景色等样式。

例上图中,我们通过QChart设置主题为深色主题,并且设置图例可见以及图表标题。

视图QChartView

QChart负责管理、组织图表,而QChartView通过接口setChart(QChart*)负责QChart的展示。

QPieSeries示例

预期效果图:
pieSeries_test

代码如下:

新建项目,创建一个默认继承至QWidget的类, 直接在该类的构造函数中构造QPieSeries对象

#include <QtCharts>
//表示我们要在下面的代码中使用charts组件的命名空间
QT_CHARTS_USE_NAMESPACE
#include <QPieSlice>
#include "widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    //创建饼图系列对象
    QPieSeries* pie = new QPieSeries();
    //使用append初始化该饼图系列
    pie->append("Jane", 1);
    pie->append("Joe", 2);
    pie->append("Andy", 3);
    pie->append("Barbara", 4);
    pie->append("Axel", 5);

    //设置其中一个切片
    QPieSlice* slice = pie->slices().at(1); //得到系列pie中索引为1的切片
    slice->setExploded();   //将该切片与饼图分离
    slice->setLabelVisible();   //设置标签可见
    slice->setPen(QPen(Qt::darkGreen, 2));  //设置该切片的pen属性, 即绘制该切片边框的钢笔
    slice->setBrush(Qt::green); //设置该切片的brush属性, 即填充切片的画笔颜色

    //创建QChart对象管理pie系列
    QChart* chart = new QChart();
    chart->addSeries(pie);
    //设置图表标题
    chart->setTitle("Simple piechart example");
    //可以隐藏legend图例
    //chart->legend()->hide();

    //最后将QChart显示在QChartView上
    QChartView* view = new QChartView(this);
    view->setRenderHint(QPainter::Antialiasing);

    view->setChart(chart);

    resize(400, 300);
    view->resize(size());

}
QTChart中更新饼图的数据可以通过以下步骤实现: 1. 创建一个QPieSeries对象,用于存储饼图的数据。 2. 使用addPieSlice()方法向QPieSeries对象中添加饼图的切片,每个切片代表一个数据项。 3. 使用setLabelsVisible()方法设置是否显示饼图的标签。 4. 使用setLabelsPosition()方法设置饼图标签的位置。 5. 使用setHoleSize()方法设置饼图的孔径大小。 6. 使用setPieStartAngle()方法设置饼图的起始角度。 7. 使用setPieEndAngle()方法设置饼图的结束角度。 8. 使用setPieSize()方法设置饼图的大小。 9. 使用setPieRotation()方法设置饼图的旋转角度。 10. 使用setPieSlicesVisible()方法设置是否显示饼图的切片。 11. 使用setPieSliceExploded()方法设置是否将某个切片分离出来。 12. 使用setPieSliceExplodeDistanceFactor()方法设置切片分离的距离因子。 13. 使用setPieSliceExplodeDuration()方法设置切片分离的动画持续时间。 14. 使用setPieSliceExplodeAnimationEnabled()方法设置是否启用切片分离的动画效果。 15. 使用setPieSliceLabelColor()方法设置饼图标签的颜色。 16. 使用setPieSliceLabelFont()方法设置饼图标签的字体。 17. 使用setPieSliceLabelPrecision()方法设置饼图标签的精度。 18. 使用setPieSliceLabelBackgroundVisible()方法设置是否显示饼图标签的背景。 19. 使用setPieSliceLabelBackgroundBrush()方法设置饼图标签的背景画刷。 20. 使用setPieSliceLabelBackgroundPen()方法设置饼图标签的背景画笔。 通过以上步骤,你可以更新饼图的数据并设置其各种属性。 #### 引用[.reference_title] - *1* *2* [QtCharts 饼图的基本用法](https://blog.csdn.net/u011186532/article/details/127243817)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Qt图表绘制(QtCharts)-绘制简单的饼图(8)](https://blog.csdn.net/qq_43627907/article/details/124547896)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值