Qt图表绘制(QtCharts)-画简单的条形图(4)
文章目录
- Qt图表绘制(QtCharts)-画简单的条形图(4)
-
- 1、概述??
- 2.实现步骤
- 3.主要使用类别
- 4.主代码
- 5.实现效果
- 6、源代码??
更精彩的内容 |
---|
??个人内容分类汇总 ?? |
注:我用的QtCharts是基于Qt 5.12.12版本 |
1、概述??
Qt Charts 该模块提供了一为中心的用户界面提供了一组易于使用的图表组件。
它使用
Qt Graphics View
因此,图表可以很容易地集成到现代用户界面中。Qt Charts 可以用作 QWidgets、QGraphicsWidget 或 QML 类型。 用户可以通过选择图表主题之一轻松创建令人印象深刻的图表。
???
- 在
initChart()
如何使用函数?QtCharts绘制简单的条形图;- 详细的注释和注意事项包含在源码中 ;
- 将UI与代码分离,使实现图表绘制的代码更加简更加简。
2.实现步骤
-
打开
.pro
文件,输入Qt = charts
,引入Qt Charts模块; -
打开ui选择一个设计器
Graphics View
鼠标右键控件; -
输入
QChartView
,点击添加、提升; -
您可以在窗口右上角看到控制类型
QChartView
然后将控件命名为chartView; 注意:由于QChartView需要引入命名空间,所以在这里提升后编译不通过。 -
添加代码;一般我们最好在
cpp文件
尽量避免添加头文件和引入命名空间.h文件
在这里引入(为了方便,简洁的代码直接在头文件中引入命名空间)cpp文件中引入命名空间需要在ui_widget.h文件前,否则,由于编译失败,编译将失败ui将在文件中使用QChartView类。#include <QtCharts> // 导入QtCharts所有的头文件也可以单独导入某个文件 // 引入qchart命名空间(注:ui中提升为QChartView, // 则QT_CHARTS_USE_NAMESPACE一定要放##include "ui_widget.h"否则编译会失败) QT_CHARTS_USE_NAMESPACE
3.主要使用类别
类名 | 作用 |
---|---|
QBarSet | QBarSet 类表示条形图中的一组条形 |
QBarSeries | 将一系列数据显示为按类别分组的垂直条形图 |
QBarCategoryAxis | 将类别添加到图表别。 |
QValueAxis | 将数值添加到图表的轴中 |
4.主代码
- 在
widget.cpp
调用结构函数initChart()
函数;
/** * @brief 条形图初始化绘制 */ void Widget::initChart() {
// QBarSet 类表示条形图中的一组条形 QBarSet* set0 = new QBarSet("C "); QBarSet* set1 = new QBarSet("java"); QBarSet* set2 = new QBarSet("python"); QBarSet* set3 = new QBarSet("html");
QBarSet* set4 = new QBarSet("css");
// 为每一个条形添加数据
*set0 << 1 << 2 << 3 << 4 << 5 << 6;
*set1 << 5 << 0 << 0 << 4 << 0 << 7;
*set2 << 4 << 5 << 8 << 13 << 8 << 5;
*set3 << 5 << 6 << 7 << 3 << 4 << 5;
*set4 << 9 << 7 << 5 << 3 << 1 << 2;
// QBarSeries 类将一系列数据显示为按类别分组的垂直条。
QBarSeries* series = new QBarSeries();
series->append(set0);
series->append(set1);
series->append(set2);
series->append(set3);
series->append(set4);
// QChart 类管理图表系列(series)、图例(legends)和轴(axes)。
QChart* chart = ui->chartView->chart(); // 获取QChartView自带的chart
chart->addSeries(series); // 将创建好的条形图series添加进chart中
chart->setTitle("关于学习编程时间的条形图"); // 设置标题
chart->setAnimationOptions(QChart::SeriesAnimations); // 设置图表变化时的动画效果
QStringList categories; // X轴分类,一般与QBarSet中添加的数据个数相同,如果少了则会显示不全,多了不影响,但是不能重复
categories << "星期一" << "星期二" << "星期三"
<< "星期四" << "星期五" << "星期六" << "星期天"; // 星期天当然是休息了...
QBarCategoryAxis* axisX = new QBarCategoryAxis(); // QBarCategoryAxis类向图表的轴添加类别。
axisX->setTitleText("X轴名称是:星期几"); // 设置X轴标题
axisX->append(categories);
chart->addAxis(axisX, Qt::AlignBottom); // 将X轴放在图表的底部
series->attachAxis(axisX); // 将axis指定的轴附着到series。
QValueAxis* axisY = new QValueAxis(); // 创建Y轴
axisY->setRange(0, 24); // 设置Y轴范围(学习啊,当然是24小时喽)
axisY->setTitleText("Y轴当然是:学习时间"); // 设置Y轴标题
chart->addAxis(axisY, Qt::AlignLeft); // Y轴左对齐
series->attachAxis(axisY);
chart->legend()->setVisible(true); // 设置图例是否可见(默认是可见的)
chart->legend()->setAlignment(Qt::AlignRight); // 设置图例显示的位置
ui->chartView->setRenderHint(QPainter::Antialiasing); // 设置抗锯齿(不过在条形图中不设置也没关系)
}
5、实现效果🙉
6、源代码🤖
gitee github
😮💨😮💨😮💨😮💨😮💨😮💨😮💨😮💨