QChart之QPieSeries绘制饼状图

前言:
绘制饼图需要用到3个类
QPieSeries: 用于创建有由一系列数据组成的饼图数据
QChart: 图表界面,用来管理图表内容,颜色,大小等
QChartView:负责显示QChart

mywidget.h:

#ifndef MYWIDGET_H
#define MYWIDGET_H

#include <QWidget>

#include <QtCharts/QChartGlobal>
#include <QtCharts/QChart>
#include <QtCharts/QChartView>

#include <QtWidgets/QWidget>
#include <QtWidgets/QGridLayout>
#include <QtCharts/QPieSeries>



QT_CHARTS_USE_NAMESPACE

class MyWidget : public QWidget
{
    Q_OBJECT

public:
    MyWidget(QWidget *parent = 0);
    ~MyWidget();

    QPieSeries  *pieseries;
    QChart      *m_chart;
    QGridLayout *m_gridlaout;
    QChartView  *m_chartview;

};

#endif // MYWIDGET_H

mywidget.cpp:

#include "mywidget.h"

MyWidget::MyWidget(QWidget *parent)
    : QWidget(parent)
{
    m_chart = new QChart();
    m_chartview = new QChartView(m_chart,this);
    m_chartview->setRenderHint(QPainter::Antialiasing); //渲染

    m_gridlaout = new QGridLayout();
    m_gridlaout->addWidget(m_chartview,0,0,3,1);
    setLayout(m_gridlaout);

    resize(960, 720);


    //添加series 可以修改颜色,比例等
    pieseries = new QPieSeries();
    pieseries->append("a",2);
    pieseries->append("b",3);
    pieseries->append("c",5);

    //修改各个区域的颜色
    pieseries->setLabelsVisible(true);  //label就是延伸出来的那跟线条
    pieseries->setUseOpenGL(true);  //开启gpu绘图 gpu 图像处理器

    pieseries->slices().at(0)->setColor(QColor(0,0,255));  //slices位类内部创建好了的list表,我们不需要再新建list表来存储sreies信息
    pieseries->slices().at(1)->setColor(QColor(255,0,0));  //slices位类内部创建好了的list表,我们不需要再新建list表来存储sreies信息
    pieseries->slices().at(2)->setColor(QColor(0,255,0));  //slices位类内部创建好了的list表,我们不需要再新建list表来存储sreies信息
    pieseries->slices().at(0)->setLabelColor(QColor(13,128,217));  //设置延伸出来线条的颜色 不设置默认黑色

    m_chart->addSeries(pieseries);

    //修改说明样式
    m_chart->legend()->setVisible(true);
    m_chart->legend()->setAlignment(Qt::AlignBottom);
    m_chart->legend()->setBackgroundVisible(true);//设置背景是否可视
    m_chart->legend()->setAutoFillBackground(true);//设置背景自动填充
    m_chart->legend()->setColor(QColor(222,233,251));//设置颜色
    m_chart->legend()->setLabelColor(QColor(0,100,255));//设置标签颜色
    m_chart->legend()->setMaximumHeight(50);

   //设置标题title
    m_chart->setTitleBrush(QBrush(QColor(0,0,255)));  //设置颜色
    m_chart->setTitleFont(QFont("微软黑体")); //设置字体
    m_chart->setTitle("饼状图");
}

注意点:
1:QPieSlice *QPieSeries::append(QString label, qreal value) 函数重载
绘制饼状图时,需要绘制的对象都是一个系列series,使用apppend函数添加,第一个参数是series的名称,第二个参数是这个系列所占的比例大小float类型
2:在类QPieSeries中已经有了一个定义好了的list表QList<QPieSlice *> slices() const; ,用来存储series对象,所以我们不用像在曲线图中一样 在外部定义一个list表来存储相关series 然后对齐赋值等操作 最后添加到chart中。既然这个类已经在内部封装好了这些东西 我们直接调用即可。
pieseries->slices().at(0)->setColor(QColor(0,0,255));
使用at()来询问slices表中的每一个series区域对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值