qt 中图表 QtCharts 的使用
1. 概念:
坐标轴-QAbstractAxis:
图表中,一般都有 X、Y 坐标轴,复杂一些的还带有 Z 轴。对应到 Qt 的图表也有 X、Y 轴对象。但是今天,我们先不展开介绍。如果我们不创建轴坐标对应的对象,可以使用 Qt 的默认轴对象。后面我们会介绍用法。
系列-QAbstractSeries:
不论是曲线、饼图、棒图还是其他图表,其中展示的内容本质都是数据。一条曲线是一组数据,一个饼图也对应一组数据。在 Qt Charts 中,这些一组组的数据被称作系列。对应不同类型的图表 Qt 提供了不同的系列。系列除了负责存储、访问数据,应该还提供了数据的绘制方法,比如折线图和曲线图分别对应 QLineSerie 和 QSPLineSerie。我们可以用不同的系列达到不同的展示目的。
图例-Legend:
类似于 Excel,Qt Charts 中也提供了图例,并且还可以显示或者隐藏图例。
图表-QChart:
Qt 提供了 QChart 类来封装前面所说的内容,比如坐标轴、系列、图例等。QChart 承担了一个组织、管理的角色。QChart 派生自 QGraphicsObject,因此它实际上是一个图元 item。我们可以从 QChart 获取到坐标轴对象、数据系列对象、图例等等,并且可以设置图表的主题、背景色等样式信息。
视图-QChartView:
负责 QChart 的展示。QChart 本身只负责图表内容的组织、管理。图表的展示由视图负责,这个视图就是 QChartView。QChartView 派生自 QGraphicsView,只是它专门提供了几个面向 QChart 的接口,比如 setChart(QChart*)等。
2. 使用
要使用QtCharts 需要几个步骤:
1. pro 文件中 修改
QT += charts
2. 把 chart 相关的头文件放在 ui 相关的头文件上面,否则会导致 编译错误,找不到 chartView 相关。
#include <QtCharts/QChartView>
#include <QtCharts/QLineSeries>
QT_CHARTS_USE_NAMESPACE
3. 在 ui 中放入 widget,然后右键 widget,选择 promote to 选项,选项卡里面:
base class name: QWidget promoted class name: QChartView Header file: QChartView
4. 注意 setChart 之后需要把 旧的给删除掉。否则内存占用越来越多。
QChart *oldChart = ui->widget->chart();
QChart *chart = new QChart();
ui->widget->setChart(chart);
if (oldChart != nullptr) {
delete oldChart;
}
参考: https://www.cnblogs.com/ybqjymy/p/13253152.html https://www.cnblogs.com/linuxAndMcu/p/11381839.html
3. charts 如果需要图像进行滚动显示,那么可以参考自带的例程 dynamicspline;如果需要再图像上显示具体的 坐标,可以参考自带例程 callout.
参考: https://www.cnblogs.com/shenLong1356/p/11230390.html