Qt之饼图(Pie Graph)

@TOC(Qt之饼图(Pie Graph))

饼图名为Pie Graph,用于显示一个数据系列中各项的大小与各项总和的比例。本文基于QtCharts实现饼图的显示。

1.实现过程

1.1环境配置

(1)首先想要使用QtCharts模块,需要在安装qt时选择勾选安装QtCharts;

(2)构建QtWidgets项目,在xx.pro项目文件中添加 Qt += charts;

(3)在头文件中添加如下代码:

cpp 复制代码
#include <QtCharts/QChart>
#include <QtCharts/QPieSeries>
#include <QtCharts/QPieSlice>
QT_CHARTS_USE_NAMESPACE

(4)在xx.ui资源文件中,添加一个QWidget窗口控件并提升为QChartView类。

饼图显示

cpp 复制代码
QChart *chart = new QChart();
    chart->setAnimationOptions(QChart::SeriesAnimations);
    ui->widget_bar->setChart(chart);
    ui->widget_bar->setRenderHint(QPainter::Antialiasing);
    chart = ui->widget_bar->chart();						//获取chart对象
    chart->removeAllSeries();							//删除所有序列
    ui->widget_bar->chart()->setTitle("");
    //series->setHoleSize(ui->spinHoleSize->value()); //饼图中间空心的大小
    m_series = new QPieSeries(); //创建饼图序列
    m_series->clear();
    QStringList list;
    list<<"完成度"<<"符合度"<<"应用情况";
    for (int i = 0; i < 3; i++) //添加分块数据
    {
        int data = 0;
        if(i == 0)
            data = 45;
        else if(i == 1)
            data = 30;
        else
            data = 25;
        m_series->append(list[i], data);
    }

    m_series->setLabelsVisible(true);					//只影响当前的slices,必须添加完slice之后再设置
    ui->widget_bar->chart()->addSeries(m_series);						    //添加饼图序列

                                                        //饼图分块
    QPieSlice *slice;
    for (int i = 0; i < 3; i++)
    {
        slice = m_series->slices().at(i);
        slice->setLabel(slice->label() + QString::asprintf(": %.0f, %.1f%%",         //设置分块的标签
            slice->value(), slice->percentage() * 100));

        connect(slice, SIGNAL(hovered(bool)), this, SLOT(on_PieSliceHighlight(bool)));//信号与槽函数关联,鼠标落在某个分块上时,此分块弹出
    }
    ui->widget_bar->chart()->legend()->setVisible(true);			        //图例
    ui->widget_bar->chart()->legend()->setAlignment(Qt::AlignRight);      //Qt::AlignRight
相关推荐
AI玫瑰助手7 小时前
Python函数:默认参数的定义与注意事项
开发语言·python·信息可视化
油炸自行车7 小时前
Claude Code 错误:API Error: 400 Failed to deserialize the JSON body into the
开发语言·javascript·json·trae·claude code·api error 400
肩上风骋7 小时前
C++14特性
开发语言·c++·c++14特性
读书札记20227 小时前
Qt界面卡死问题探讨及解决方法
qt
JAVA社区8 小时前
Java高级全套教程(十)—— SpringCloudAlibaba超详细实战详解
java·开发语言·spring cloud·面试·职场和发展
弥树子8 小时前
踩坑记录:服务器内网调用接口,真实请求URL与官方公开URL不一致问题排查
开发语言·php
z落落9 小时前
C# ToCharArray + foreach遍历 + String与StringBuilder
开发语言·c#
学代码的真由酱9 小时前
Java多用户一对一网页聊天室-测试报告
java·开发语言·功能测试·测试
人道领域9 小时前
【LeetCode刷题日记】669.修剪二叉搜索树
开发语言·python·算法
xiaoshuaishuai810 小时前
C# AvaloniaUI动态显示图片
开发语言·c#