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

4. charts 里面使用 chart.scroll(x, 0); 这个 x 注意不是 chart.plotArea().width() / m_axis.tickCount(); 而应该是 m_chart->plotArea().width() / (X_RANGE_MAX - X_RANGE_MIN); 是和 setRange 这个设置相对应,而不是和 setTickCount 这个设置的值相对应。

标签: Qt

添加新评论