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
相关推荐
Felix_One5 天前
Qt 串口通信避坑指南:QSerialPort 的 5 个常见问题
qt
blasit8 天前
笔记:Qt C++建立子线程做一个socket TCP常连接通信
c++·qt·tcp/ip
郑州光合科技余经理13 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
feifeigo12313 天前
matlab画图工具
开发语言·matlab
dustcell.13 天前
haproxy七层代理
java·开发语言·前端
norlan_jame13 天前
C-PHY与D-PHY差异
c语言·开发语言
多恩Stone13 天前
【C++入门扫盲1】C++ 与 Python:类型、编译器/解释器与 CPU 的关系
开发语言·c++·人工智能·python·算法·3d·aigc
QQ40220549613 天前
Python+django+vue3预制菜半成品配菜平台
开发语言·python·django
遥遥江上月13 天前
Node.js + Stagehand + Python 部署
开发语言·python·node.js
m0_5312371713 天前
C语言-数组练习进阶
c语言·开发语言·算法