青海西宁做网站多少钱,最新手机网站推荐,陈木胜导演怎么走的,高校资源网网站建设方案学习目标#xff1a;Qt 折线图#xff0c;柱形图和扇形统计图编程
学习基础
Qt QChart 曲线图表操作-CSDN博客
学习内容
Qt中绘制三种常见的图表非常方便, 主要步骤如下:
1. 折线图:
- 使用QLineSeries定义折线数据,添加多个坐标点 - 使用QValueAxis创建X轴和Y轴 - 将…学习目标Qt 折线图柱形图和扇形统计图编程
学习基础
Qt QChart 曲线图表操作-CSDN博客
学习内容
Qt中绘制三种常见的图表非常方便, 主要步骤如下:
1. 折线图:
- 使用QLineSeries定义折线数据,添加多个坐标点 - 使用QValueAxis创建X轴和Y轴 - 将系列和坐标轴添加到QChart中 - 设置属性如标题、线条样式等 - 添加到QChartView显示
2. 柱形图:
- 使用QBarSet定义每个组的柱数据 - 使用QBarSeries添加多个QBarSet组成总系列 - 同样创建分类轴和值轴 - 可以采用堆积方式显示 - 其他设置与折线图类似
3. 饼图:
- 使用QPieSeries定义饼图序列 - 通过QPieSlice添加多个扇形部分 - 设置每个扇形的名称、百分比和颜色 - 添加到QChart并使用QChartView显示 - 可以手动修改扇形的开始和长度Angle
Qt Chart提供了很友好的接口实现各种常见图表。开发者只需熟悉这几个关键类,就可以方便绘制不同需求的图表。它使用户界面的数据可视化开发工作效率得到很大提升。 话不多说直接开始上代码
项目效果 核心代码
折线图
#include widget.h
#include ui_widget.hWidget::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 QApplicationint main(int argc, char *argv[])
{QApplication a(argc, argv);MainWindow w;//创建图表QChart * chart new QChart;chart-setTitle(某某学校实验班高考成绩分数);//创建条形对象数据QBarSet* bar new QBarSet(bar);*bar560710599688701;//绘画条形QStackedBarSeries* series new QStackedBarSeries;series-append(bar);QStringList strlist{小王,小李,小吴,小张,小赵};//创建x y轴 通过QBarCategoryAxis类将类型添加到图表的轴QBarCategoryAxis* ax new QBarCategoryAxis;ax-setTitleText(考生姓名);ax-append(strlist);QValueAxis* ay new QValueAxis;ay-setTitleText(高考总分阶梯);ay-setRange(0,750);chart-addSeries(series);chart-addAxis(ax,Qt::AlignBottom);chart-addAxis(ay,Qt::AlignLeft);series-attachAxis(ax);series-attachAxis(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 QApplicationint 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* s1series-slices().at(0);QPieSlice* s2series-slices().at(1);QPieSlice* s3series-slices().at(2);QPieSlice* s4series-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)