Qt Charts基本组成

简介: 简述 Qt Charts API 构建在 Qt Graphics View 框架之上,可以使用 QChart 类将图表显示为 QGraphicsWidget。但还有一个方便的类 - QChartView,可以作为一个独立的窗口,可以更方便的构建图表,不需要与 QGraphicsScene 一起使用。 所有的图表类型均由 QAbstractSeries 派生类表示。要创建图
+关注继续查看

简述

Qt Charts API 构建在 Qt Graphics View 框架之上,可以使用 QChart 类将图表显示为 QGraphicsWidget。但还有一个方便的类 - QChartView,可以作为一个独立的窗口,可以更方便的构建图表,不需要与 QGraphicsScene 一起使用。

所有的图表类型均由 QAbstractSeries 派生类表示。要创建图表,必须使用相关 series 类的实例,并将其添加到 QChart。

版权所有:一去丶二三里,转载请注明出处:http://blog.csdn.net/liang19890820

Qt Charts API

要使用 Qt Charts,必须先了解其基本组成部分,以及各部分所关联的类及接口。

按照功能分类(层级关系表示继承性):

  • QChartView
    继承自 QGraphicsView,是独立的图表窗口。

  • QChart (继承自 QGraphicsWidget,是 Qt Charts 的主要图表 API)

    • QPolarChart (Qt Charts 的极坐标图 API)

可以通过以下两种方式来显示图表:

  1. QChartView + QChart
    QChartView 作为一个独立的图表窗口,用于显示图表(QChart),不需要与 QGraphicsScene 一起使用。

  2. QGraphicsScene + QChart
    如果要在现有的 QGraphicsScene 中显示图表,则需要使用 QChart(或 QPolarChart)类。

这样理解可能更为简单:

QGraphicsView 提供了视图部件,QChartView 功能与其相同(因为继承自 QGraphicsView),用于显示图表(QChart)。

QGraphicsScene 提供了图形场景,用于管理大量图元,既然可以管理 QGraphicsWidget,必然可以管理 QChart(因为 QChart 继承自 QGraphicsWidget)。

图表类型

QAbstractSeries 继承自 QObject,是所有 Qt Chart series 的基类。

通常使用其特定的继承类而非基类,例如:柱状图、面积图、箱形图、饼图、线性图、曲线图、散点图。

以 QBoxPlotSeries 箱形图为例:

这里写图片描述

  • QAbstractSeries
    • QAbstractBarSeries (所有 Bar series 柱状图/条形图的基类)
      • QBarSeries (用于创建柱状图)
      • QHorizontalBarSeries (用于创建水平柱状图)
      • QHorizontalPercentBarSeries (用于创建水平百分比柱状图)
      • QHorizontalStackedBarSeries (用于创建水平层叠图)
      • QPercentBarSeries (用于创建百分比柱状图)
      • QStackedBarSeries (用于创建层叠图/堆叠的条形图)
    • QAreaSeries (用于创建面积图)
    • QBoxPlotSeries (用于创建箱形图/盒须图)
    • QPieSeries (用于创建饼图)
    • QXYSeries (线性图、曲线图、散点图的基类)
      • QLineSeries (用于创建折线图)
        • QSplineSeries (用于创建曲线图)
      • QScatterSeries (用于创建散点图)

对于饼图 QPieSeries 来说,会用到:

  • QPieSlice (继承自 QObject,定义 QPieSeries 中的切片)

这里写图片描述

坐标轴

QAbstractAxis 继承自 QObject,用于操作图表的轴。可以单独控制各种轴元素的属性和可见性,例如:轴线、标题、标签、网格线和阴影。

这里写图片描述

每个 series 可以绑定到一个或多个水平轴和垂直轴,但不支持混合轴类型,例如:在相同方向上指定 QValueAxis 和 QLogValueAxis。

  • QAbstractAxis
    • QBarCategoryAxis (在刻度线之间绘制类别)
    • QDateTimeAxis (以适当的 DateTime 格式来配置标签)
    • QLogValueAxis (被附加到具有一个或多个点的 series)
    • QValueAxis (在刻度所在位置绘制轴的值)
      • QCategoryAxis (允许在轴上放置命名范围)

图例和图例标记

  • QLegend (图例 - 继承自 QGraphicsWidget)
  • QLegendMarker (图例标记 - 继承自 QObject,用于访问 QLegend 内的标记的抽象对象)

图例标记由两部分组成:

  • 彩色框:反映 series 的颜色
  • 标签:显示 series 的名称

这里写图片描述

注意: QLegendMarker 始终与一个 series 相关

  • QLegendMarker
    • QAreaLegendMarker (用于 QAreaSeries 的 QLegendMarker 子类)
    • QBarLegendMarker (用于 QAbstractBarSeries 的 QLegendMarker 子类)
    • QBoxPlotLegendMarker (用于 QBoxPlotSeries 的 QLegendMarker 子类)
    • QPieLegendMarker (用于 QPieSeries 的 QLegendMarker 子类)
    • QXYLegendMarker (用于 QXYSeries 的 QLegendMarker 子类)

模型映射器

Model Mapper - 模型映射器,允许使用由 QAbstractItemModel 派生的模型作为 chart series 图表系列的数据源。

这里写图片描述

例如:QHBarModelMapper,用于创建 QAbstractBarSeries 和 QAbstractItemModel 派生模型对象之间的连接

  • QHBarModelMapper (用于 QAbstractBarSeries 的水平模型映射器)
  • QVBarModelMapper (用于 QAbstractBarSeries 的垂直模型映射器)
  • QVBoxPlotModelMapper (用于 QBoxPlotSeries 的垂直模型映射器)
  • QHPieModelMapper (用于 QPieSeries 的水平模型映射)
  • QVPieModelMapper (用于 QPieSeries 的垂直模型映射器)
  • QHXYModelMapper (用于 QXYSeries 的水平模型映射器)
  • QVXYModelMapper (用于 QXYSeries 的垂直模型映射器)

Set

Set 主要包含:

  • QBarSet (继承自 QObject,不同 QAbstractBarSeries 的构建单元)
  • QBoxSet (继承自 QObject,QBoxPlotSeries 的构建单元)

Set 顾名思义,就是提供了一组数据。也就是说,当需要显示一组柱状图或者箱形图时,需要用到他们。

这里写图片描述

// 构建不同的 QAbstractBarSeries
QBarSet *set0 = new QBarSet("Jane");
QBarSet *set1 = new QBarSet("John");
QBarSet *set2 = new QBarSet("Axel");
QBarSet *set3 = new QBarSet("Mary");
QBarSet *set4 = new QBarSet("Samantha");

*set0 << 1 << 2 << 3 << 4 << 5 << 6;
*set1 << 5 << 0 << 0 << 4 << 0 << 7;
*set2 << 3 << 5 << 8 << 13 << 8 << 5;
*set3 << 5 << 6 << 7 << 3 << 4 << 5;
*set4 << 9 << 7 << 5 << 3 << 1 << 2;

// 柱状图
QBarSeries *series = new QBarSeries();
series->append(set0);
series->append(set1);
series->append(set2);
series->append(set3);
series->append(set4);

Y 轴的范围是:0.0 - 13.0。以 set2(橙色柱状图)为例,分别为其中添加 3、5、8、13、8、5 共六组数,当显示图表时,可以看出橙色柱状图的高度正是所对应的纵坐标。

更多参考

想必对于 Qt Charts 基本组成有了一个简单的认识了,来做一个简单的小结:

可视化部件包含:

  • QChartView - 继承自 QGraphicsView,是独立的图表窗口。

  • QChart - 继承自 QGraphicsWidget,是 Qt Charts 的主要图表 API。

    • QPolarChart - Qt Charts 的极坐标图 API。
  • QLegend - 继承自 QGraphicsWidget,用于显示图例。

其它类及接口主要为可视化部件提供相应的数据源,以及交互控制功能。

注意:并非所有的类都是可视化的。

目录
相关文章
|
25天前
|
图形学 Python 容器
『PyQt5-基础篇』| 04 Qt Designer的初步快速了解
『PyQt5-基础篇』| 04 Qt Designer的初步快速了解
45 1
|
10月前
|
IDE Java 开发工具
安装PyQt5以及designer Pyside
安装PyQt5以及designer Pyside
165 0
安装PyQt5以及designer Pyside
Qt&Vtk-030-Theme
Qt&Vtk-030-Theme
88 0
Qt&Vtk-030-Theme
Qt&Vtk-013-Cube
Qt&Vtk-013-Cube
98 0
Qt&Vtk-013-Cube
Qt qml 下使QtCharts
欢迎来到我的博客,希望这篇文章对你有所帮助,如果觉得不错,请点赞搜藏哈。
185 0
Qt qml 下使QtCharts
Qt-QML-Loader初步接触
先说说为什么用到了QML的Loader,这里我就要先扯点别的,那就是QML自带的ColorDialog,QML的机制 是优先调用系统提供的ColorDialog,如果系统的ColorDialog的不可用或者其他原因,则会调用Qt widget的ColorDialog,如果这个也不可以,才会调用QML的的ColorDialog,这里我就们就可以自己改写这个默认的QML版本的ColorDialog。
130 0
Qt-QML-Loader初步接触
Qt Charts_Audio实践
这里完全是照搬帮助文档中的代码生成的程序
77 0
Qt Charts_Audio实践
Qt Charts实践
Qt Charts的横空出世标志着QWT,QCustomPlot 。。。。。时代的终结,让我们开始使用QtCharts吧
133 0
Qt Charts实践
qt-vs-addin:Qt4和Qt5之VS插件如何共存与使用
qt-vs-addin:Qt4和Qt5之VS插件如何共存与使用
271 0
qt-vs-addin:Qt4和Qt5之VS插件如何共存与使用
|
索引
pyqt5的QComboBox 使用模板
QComboBox 的常规使用方法,在这个使用模板里,基本都有了。 熟悉一下代码,直接就可以用了。 【如下代码,完全复制,直接运行,即可使用】 import sys from PyQt5.
1081 0
推荐文章
更多