Qt Charts基本组成

简述

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

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

  • 简述
  • Qt Charts API
  • 图表类型
  • 坐标轴
  • 图例和图例标记
  • 模型映射器
  • Set
  • 更多参考

版权所有:一去丶二三里,转载请注明出处: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,用于显示图例。

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

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

时间: 2024-09-16 04:50:48

Qt Charts基本组成的相关文章

Qt Charts - 让数据可视化更简单

简述 Qt Charts 模块提供了一套易于使用的图表组件例如柱状图.面积图.箱形图.饼图.线性图.曲线图.散点图...由于其采用了 Qt Graphics View 框架因此图表可以很容易地被集成到现代的用户界面. Qt Charts 除了图表类型丰富.方便快捷之外还完美支持移动端可用作 QWidgets.QGraphicsWidget 或 QML 类型.通过选择一个图表主题即可轻松地创建令人印象深刻的图表. 在 Qt5.7 之前的版本最早只能到 Qt5.4需要对 Qt Charts 自行编译

Qt Charts

简述 Qt Charts模块提供了一套易于使用的图表组件.它采用了Qt Graphics View框架,因此图表可以很容易地集成到现代的用户界面. Qt Charts可以被用作QWidgets.QGraphicsWidget.或QML类型.用户可以方便地通过选择图表主题之一来创建令人印象深刻的图表. 简述 入门指南 参考资料 示例 安装配置 使用 入门指南 如果要导入Qt Charts QML类型,在你的.qml文件中添加下面的导入语句: import QtCharts 2.0 如果你打算在应用

Qt Charts入门指南

简述 Qt Charts 的横空出世标识着 QWT.QCustomPlot -- 时代的终结,是时候向他们做一个简单的告别了.Qt Charts - 强大并极具吸引力,从现在开始,让我们顺势拥抱灿烂的明天 . 简述 安装配置 基本示例 入门指南 基本用法 QChartView QChart QGraphicsScene QChart 安装配置 Qt5.7 中已经集成了 Qt Charts 模块,关于 Qt 的安装配置,请参考: Qt环境搭建(Visual Studio) Qt环境搭建(Qt Cr

《Qt 实战一二三》

简介 "我们来自Qt分享&&交流,我们来自Qt Quick分享&&交流",不管你是笑了,还是笑了,反正我们是认真的.我们就是要找寻一种Hold不住的状态,来开始每一天的点滴分享,我们是一个有激情,有态度的部队. 但是我们还是我们,我们只是多了一份责任.古语有云:"不积跬步无以至千里,不积小流无以成江海",所以每一个伟大事务的产生都不是一蹴而就的.现在我们要立足眼下,把第一站放在地球,"<Qt 实战一二三>&quo

基于Qt的图表库

简述 如果要开发一个 Qt 应用程序C++ 或 QML包含绘图和数据可视化需要插入一些图表例如饼图.条形图或更复杂的有什么可选的图表库呢一起来看看. 简述 Qt Charts KD Chart QWT QCustomPlot QtiPlot 更多参考 版权所有一去丶二三里转载请注明出处http://blog.csdn.net/liang19890820 Qt Charts 来自Qt 官方提供 基于Qt Graphics View 框架 兼容性Qt5.7 及以上版本可直接使用Qt5.7 之前的版本

Qt5.7新特性

简述 Qt5.7发布了,新特性如下. 简述 新特性 C11 Support Required from the compiler New Features within existing modules New Modules Technology Preview Modules Deprecated Modules Removed Modules Configurations 安装配置 使用 更多参考 新特性 C++11 Support Required from the compiler Q

QT中的QInputDialog的小例子

其实这断代码没什么优秀之处,贴出来主要为为了方便自己和他人,因为以后如果用到这一块的话,这些代码可能能够直接拿过来用. InpugDialog.h头文件: #ifndef INPUGDIALOG_H #define INPUGDIALOG_H #include <QtGui> #include "ui_inpugdialog.h" class InpugDialog : public QDialog { Q_OBJECT public: InpugDialog(QWidge

vs2008-VS搭配QT,x64平台下为挖三维编的dll,怎么调试

问题描述 VS搭配QT,x64平台下为挖三维编的dll,怎么调试 VS搭配QT,x64平台下为挖三维编的dll,怎么调试?新手,试过用挖三维打开调试,但是没看到界面在哪里,请懂得QT的前辈回答,谢谢! 解决方案 https://github.com/Vaa3D/Vaa3D_Wiki/wiki/Build-Vaa3D-on-Linux

qt如何实现 滑动屏幕的效果

问题描述 qt如何实现 滑动屏幕的效果 用了qtscrollArea做了只能靠移动滑动条来实现滑动的效果,怎么样才能做到用触摸屏实现滑动效果,而不是靠滑动条.求大神指点. 解决方案 不要依赖于 qtscrollArea,自己做滑动效果,这样就可以不依靠滑动条.