main.cpp
#include <QtWidgets/QApplication>
#include <QtWidgets/QMainWindow>
#include <QtCharts/QChartView>
#include <QtCharts/QPieSeries>
#include <QtCharts/QPieSlice>
#include <QtCore/QDebug>
QT_USE_NAMESPACE
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
//![1]
//饼图系列由定义为 QPieSlice 对象的切片组成。
//切片可以有任何值
//因为 QPieSeries 对象计算切片与系列中所有切片总和的百分比
//以确定图表中切片的实际大小
//图表上的饼图大小和位置通过使用范围从 0.0 到 1.0 的相对值进行控制
//这些与实际的图表矩形有关。
//默认情况下,饼图定义为完整饼图。
//可以通过设置系列的起始角度和角度跨度来创建部分饼图。
//一个完整的馅饼是 360 度,其中 0 是 12 点钟。
QPieSeries *series = new QPieSeries();
//此属性保存甜甜圈孔的大小。
//该值是相对于图表矩形的,因此:
//0.0 是最小尺寸(绘制的没有洞的完整饼图)。
//1.0 是可以容纳图表的最大尺寸(甜甜圈没有宽度)。
//设置此属性时,会根据需要调整大小属性,以确保孔大小不大于饼图大小。
series->setHoleSize(0.35);
//QPieSlice *QPieSeries::append(const QString &label, qreal value)
//将具有指定值和标签的单个切片附加到系列。
//切片所有权传递给系列。
//如果值为 NaN、Inf 或 -Inf,则返回 null 并且不向系列添加任何内容。
series->append("Protein 4.2%", 4.2);
QPieSlice *slice = series->append("Fat 15.6%", 15.6);
//此属性保存切片是否与饼图分离。
slice->setExploded();
//此属性保存切片标签的可见性。 默认情况下,标签不可见。
slice->setLabelVisible();
series->append("Other 23.8%", 23.8);
series->append("Carbs 56.4%", 56.4);
//![1]
//![2]
//QChartView 是一个独立的小部件,可以显示图表
QChartView *chartView = new QChartView();
chartView->setRenderHint(QPainter::Antialiasing);
chartView->chart()->setTitle("Donut with a lemon glaze (100g)");
chartView->chart()->addSeries(series);
chartView->chart()->legend()->setAlignment(Qt::AlignBottom);
chartView->chart()->setTheme(QChart::ChartThemeBlueCerulean);
chartView->chart()->legend()->setFont(QFont("Arial", 7));
//![2]
//![3]
QMainWindow window;
window.setCentralWidget(chartView);
window.resize(400, 300);
window.show();
//![3]
return a.exec();
}