一.QPieSeries介绍
文档原文:
The QPieSeries class presents data in pie charts.
翻译过来就是:QPieSeries类是以饼状图的形式来显示数据的
A pie series consists of slices that are defined as QPieSlice objects. The slices can have any values as the QPieSeries object calculates the percentage of a slice compared with the sum of all slices in the series to determine the actual size of the slice in the chart.
翻译过来的意思就是:饼图系列由定义为qpiesslice对象的片组成。切片可以是任何值,因为QPieSeries对象会计算一个切片占该系列中所有切片的百分比,以确定图表中切片的实际大小
二使用举例
1.设置显示容器,拖动一个widget,并将其提升为QChartView
2.核心代码
注意的点:必须使用命名空间:QT_CHARTS_USE_NAMESPACE
void Widget::createPieSeries()
{
// 设置标题
ui->widge_pieSerie->chart()->setTitle("饼图");
// 设置抗锯齿
ui->widge_pieSerie->setRenderHint(QPainter::Antialiasing);
// 设置饼图主题
ui->widge_pieSerie->chart()->setTheme(QChart::ChartThemeQt);
//
QPieSeries *pieSeries= new QPieSeries();
// 添加数据
pieSeries->append("01",23.6);
pieSeries->append("02",41.25);
pieSeries->append("03",10.25);
// 设置块标签
for(int sNum=0;sNum<pieSeries->slices().count();sNum++)
{
QPieSlice *slice =pieSeries->slices().at(sNum);
QString tagText = QString("%1%2%3")
.arg(slice->label())
.arg(QStringLiteral("占比"))
.arg(QString::number(slice->percentage()*100));
slice->setLabel(tagText);
}
// 设置标签显示位置
pieSeries->setLabelsPosition(QPieSlice::LabelPosition::LabelOutside);
// 显示标签
pieSeries->setLabelsVisible(true);
// 设置最后一个分块突出
pieSeries->slices().at(pieSeries->slices().count()-1)->setExploded(true);
// 设置中心空心圆大小
pieSeries->setHoleSize(0.5);
// 显示饼图
ui->widge_pieSerie->chart()->addSeries(pieSeries);
}
效果: