简介
饼图系列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示例
预期效果图:
代码如下:
新建项目,创建一个默认继承至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());
}