从 Qt DataVisualization 迁移到 Qt Graphs

Qt DataVisualization 和 Qt Graphs 之间的 API 和功能基本保持不变。然而,在将从 Qt DataVisualization 迁移到 Qt Graphs 的应用程序时,有一些差异需要考虑。

  • QML 导入语句
  • CMake 模块包含
  • qmake 模块包含
  • 小部件应用程序创建
  • 需要使用 OpenGL 后端
  • 已移除的类
  • 已移除的 API
  • 更改的 API

QML 导入语句

Qt DataVisualization 中的导入语句

import QtDataVisualization

需要改为

import QtGraphs

用于 Qt Graphs。

CMake 模块包含

Qt DataVisualization 中的包含

find_package(Qt6 REQUIRED COMPONENTS DataVisualization)
target_link_libraries(mytarget PRIVATE Qt6::DataVisualization)

需要改为

find_package(Qt6 REQUIRED COMPONENTS Graphs)
target_link_libraries(mytarget PRIVATE Qt6::Graphs)

用于 Qt Graphs。

qmake 模块包含

Qt DataVisualization 中的包含

QT += datavisualization

需要改为

QT += graphs

用于 Qt Graphs。

小部件应用程序创建

只需像这样创建您的窗口小部件应用程序

QGuiApplication app(argc, argv);
Q3DScatter scatter;
scatter.setFlags(scatter.flags() ^ Qt::FramelessWindowHint);

您应该这样创建它

QApplication app(argc, argv);
Q3DScatter scatter;
scatter.setMinimumSize(QSize(256, 256));

需要使用 OpenGL 后端

不再需要强制使用 OpenGL 后端

qputenv("QSG_RHI_BACKEND", "opengl");

Qt Graphs 使用 Qt Quick 3D 进行渲染,因此支持在运行平台上的本地渲染后端。

已移除的类

  • Q3DCamera
  • Q3DLight
  • Q3DObject

已移除的 API

  • hasContext
  • shadowsSupported
  • reflection
  • reflectivity

更改的 API

  • optimizationHint
  • renderingMode
  • renderToImage
  • ColorGradient 和 ColorGradientStop
  • ThemeColor
  • Data APIs
  • Camera APIs
  • 枚举

optimizationHint

Legacy 现在是 QtDataVisualization 中 OptimizationDefault 模式。 Default 使用实例化,并且应适用于所有支持它的目标。

renderingMode

RenderDirectToBackground_NoClear 已被删除,因为在 Qt 6 中的 QtDataVisualization 已经是过期的。

renderToImage

renderToImage 现在返回 QSharedPointer<QQuickItemGrabResult> 而不是 QImage,并且不再接受 msaaSamples 作为参数。

ColorGradient 和 ColorGradientStop

ColorGradient 现在是 Gradient,而 ColorGradientStopGradientStop

ThemeColor

ThemeColor 现在是 Color

数据APIs

不再需要使用new创建数据数组。例如,在QtDataVisualization创建条形图数据时,操作方式如下

QBarDataRow *data = new QBarDataRow;
*data << 1.0f << 3.0f << 7.5f << 5.0f << 2.2f;

现在,操作方式如下

QBarDataRow data;
data << 1.0f << 3.0f << 7.5f << 5.0f << 2.2f;
series->dataProxy()->addRow(data);

摄像头APIs

由于Q3DCamera已被删除,相关的函数已经移动。现在可以在AbstractGraph3D中找到cameraPreset, cameraTargetPosition, cameraXRotation, cameraYRotation, cameraZoomLevel, wrapCameraXRotation, 和 wrapCameraYRotation

枚举

所有枚举都转换为局部枚举,例如QAbstract3DGraph::ShadowQualityLow已经转换为QAbstract3DGraph::ShadowQuality::Low

© 2024 Qt公司。本文件包含的文档贡献享有其各自所有者的版权。本文件中的文档是根据由自由软件基金会发布的《GNU自由文档许可证》版本1.3许可的。Qt及其相关标志是芬兰以及全球其他地区的Qt公司商标。所有其他商标均为各自所有者的财产。