Qt 统计图编程

07-12 1124阅读

学习目标:Qt 折线图,柱形图和扇形统计图编程

学习基础

Qt QChart 曲线图表操作-CSDN博客

学习内容

Qt中绘制三种常见的图表非常方便, 主要步骤如下:

1. 折线图: 

- 使用QLineSeries定义折线数据,添加多个坐标点 

- 使用QValueAxis创建X轴和Y轴

- 将系列和坐标轴添加到QChart中

- 设置属性如标题、线条样式等

- 添加到QChartView显示

2. 柱形图:

- 使用QBarSet定义每个组的柱数据  

- 使用QBarSeries添加多个QBarSet组成总系列

- 同样创建分类轴和值轴

- 可以采用堆积方式显示

- 其他设置与折线图类似

3. 饼图:

- 使用QPieSeries定义饼图序列  

- 通过QPieSlice添加多个扇形部分

- 设置每个扇形的名称、百分比和颜色

- 添加到QChart并使用QChartView显示

- 可以手动修改扇形的开始和长度Angle

Qt Chart提供了很友好的接口实现各种常见图表。开发者只需熟悉这几个关键类,就可以方便绘制不同需求的图表。它使用户界面的数据可视化开发工作效率得到很大提升。

话不多说直接开始上代码

项目效果

Qt 统计图编程

Qt 统计图编程

Qt 统计图编程

 核心代码

折线图

#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //创建图表
    QChart* chart =new QChart;
    chart->setTitle("全球各国军费增长折线图"); // 设置标题名称
    ui->graphicsView->setChart(chart);
    //设置坐标
    QValueAxis* ax =new QValueAxis;
    ax->setTitleText("年份");
    ax->setRange(2018,2022);
    ax->setTickCount(5); //设置刻度 即年份总个数
    ax->setLineVisible(true); //网格
    ax->setGridLineVisible(true);//网格线均可见
    QValueAxis *ay =new QValueAxis;
    ay->setTitleText("军费(万亿)");
    ay->setRange(3000,10000);
    ay->setTickCount(5);
    ay->setLineVisible(true);
    ay->setGridLineVisible(true);
    //绘画折线
    QLineSeries* series =new QLineSeries;
    series->setName("中国");
    series->setColor(Qt::red);
    // 添加数据点到序列
    series->append(2018,6500);
    series->append(2019,4900);
    series->append(2020,8000);
    series->append(2021,9000);
    series->append(2022,9500);
    QLineSeries* series2 =new QLineSeries;
    series2->setName("俄罗斯");
    series2->setColor(Qt::green);
    // 添加数据点到序列
    series2->append(2018,4500);
    series2->append(2019,4900);
    series2->append(2020,9000);
    series2->append(2021,10000);
    series2->append(2022,10000);
    //加入到图表
    chart->addSeries(series);
    chart->setAxisX(ax,series);
    chart->setAxisY(ay,series);
    chart->addSeries(series2);
    chart->setAxisX(ax,series2);
    chart->setAxisY(ay,series2);
}
Widget::~Widget()
{
    delete ui;
}

柱形图

#include "mainwindow.h"
#include 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    //创建图表
    QChart * chart =new QChart;
    chart->setTitle("某某学校实验班高考成绩分数");
    //创建条形对象数据
    QBarSet* bar =new QBarSet("bar");
    *barattachAxis(ay);
    chart->legend()->setVisible(false); // 设置绘图区与图表边界
    chart->legend()->setAlignment(Qt::AlignBottom);
    QChartView* view = new QChartView;
    view->setChart(chart);
    w.setWindowTitle("高考成绩--柱状图表展示");
    w.setCentralWidget(view);
    w.resize(800,500);
    w.show();
    return a.exec();
}

饼形图

#include "mainwindow.h"
#include 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    //创建饼状图绘画对象
    QPieSeries* series =new QPieSeries;
    // 占用比例
    series->append("70分以下:30%",30);
    series->append("70分-85分:40%",40);
    series->append("86分-99分:25%",25);
    series->append("100分:5%",5);
    series->setLabelsVisible(true);// 设置标签属性,可见
    QPieSlice* s1=series->slices().at(0);
    QPieSlice* s2=series->slices().at(1);
    QPieSlice* s3=series->slices().at(2);
    QPieSlice* s4=series->slices().at(3);
    s1->setColor(Qt::red);
    s2->setColor(Qt::green);
    s3->setColor(Qt::yellow);
    s4->setColor(Qt::black);
    //创建图表
    QChart* chart =new QChart;
    chart->addSeries(series);
    chart->setTitle("饼图形状--班级考试百分制整数比例");
    //创建图表视图
    QChartView* view =new QChartView;
    view->setChart(chart);
    w.setCentralWidget(view);
    w.resize(600,600);
    w.show();
    return a.exec();
}

总结

总的来说,通过这个示例可以很清楚地了解QT中的图表绘制过程:

1. 首先创建相应的图表对象,如QLineChart、QBarChart、QPieChart等。设置标题、属性等。

2. 定义数据模型,如QLineSeries、QBarSeries、QPieSeries等,用于存储图表的数据点。 

3. 添加具体的数据到系列对象中,如坐标点、分类数据、占比等。

4. 创建坐标轴对象QValueAxis和QCategoryAxis,配置名称、范围等。 

5. 将系列与坐标轴添加到图表对象中,实现数据与轴的关联。

6. 创建QChartView视图对象,设置图表给视图即可渲染展示。

7. 另外可以对分量设置个性化属性,如颜色、标签等。

通过极少量API调用,就可以绘制出丰富的线性图、柱状图、饼图等不同图表类型。这说明QT Chart的设计理念非常清晰、使用也很简单易上手。开发人员可以根据实际需求,通过组合这些基础类快速实现各种数据可视化工作。这无疑大大提升了开发效率。

最后附上源代码链接

对您有帮助的话,帮忙点个star

Qt demo: 学习qt过程 (gitee.com)

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]