QChart的应用,饼图和柱状图

1 篇文章 0 订阅
这个代码示例展示了如何使用QtCharts库创建堆叠条形图和饼图。它定义了多个条形集,分别代表不同的人物,并为每个条形集分配了不同的数据。堆叠条形图用于比较各个人物的数据,而饼图部分虽然未完成,但可以看出是用于展示比例的。代码中还设置了图表标题、动画效果,并调整了图例的显示位置。
摘要由CSDN通过智能技术生成
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtCharts/QBarSeries>
#include <QtCharts/QBarSet>
#include <QtCharts/QLegend>
#include <QtCharts/QBarCategoryAxis>
#include <QtCharts/QPieSeries>
#include <QtCharts/QPieSlice>
#include <QStackedBarSeries>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    QBarSet *set0 = new QBarSet("Jane");
    QBarSet *set1 = new QBarSet("John");
    QBarSet *set2 = new QBarSet("Axel");
    QBarSet *set3 = new QBarSet("Mary");
    QBarSet *set4 = new QBarSet("Samantha");

    *set0 << 1 << 2 << 3 << 4 << 5 << 6;
    *set1 << 5 << 0 << 0 << 4 << 0 << 7;
    *set2 << 3 << 5 << 8 << 13 << 8 << 5;
    *set3 << 5 << 6 << 7 << 3 << 4 << 5;
    *set4 << 9 << 7 << 5 << 3 << 1 << 2;
//![1]

//![2]
    QStackedBarSeries *series = new QStackedBarSeries();
    series->append(set0);
    series->append(set1);
    series->append(set2);
    series->append(set3);
    series->append(set4);

    QBarSet *set11 = new QBarSet("John");
    QBarSet *set12 = new QBarSet("Axel");

    *set11 << 1 << 2 << 3 << 4 << 5 << 6;
    *set12 << 5 << 0 << 0 << 4 << 0 << 7;

//![1]

//![2]
    QBarSeries *series1 = new QBarSeries();
    series1->append(set11);
    series1->append(set12);

//![2]

//![3]
    QChart *chart = new QChart();
    chart->addSeries(series);
    chart->addSeries(series1);
    chart->setTitle("Simple barchart example");
    chart->setAnimationOptions(QChart::SeriesAnimations);
//![3]

//![4]

//![4]

//    QPieSeries *series1 = new QPieSeries();
//    series1->setHoleSize(0.1);
//    series1->append("Protein 4.2%", 4.2);
//    QPieSlice *slice = series1->append("Fat 15.6%", 15.6);
//    slice->setExploded();
//    slice->setLabelVisible();
//    series1->append("Other 23.8%", 23.8);
//    series1->append("Carbs 56.4%", 56.4);
//    series1->setPieSize(0.3);
//    series1->setHorizontalPosition(0.8);
//    chart->addSeries(series1);
//![5]
//!
    QStringList categories;
    categories << "Jan" << "Feb" << "Mar" << "Apr" << "May" << "Jun";
    QBarCategoryAxis *axis = new QBarCategoryAxis();
    axis->append(categories);
    chart->createDefaultAxes();
    chart->setAxisX(axis, series1);
    chart->legend()->setVisible(true);
    chart->legend()->setAlignment(Qt::AlignBottom);
//![5]

//![6]
    ui->chartview->setChart(chart);
    ui->chartview->setRenderHint(QPainter::Antialiasing);


}

MainWindow::~MainWindow()
{
    delete ui;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值