Warning
This section contains snippets that were automatically translated from C++ to Python and may contain errors.
Qt Graphs Migration from Qt DataVisualization¶
The API and functionality between Qt DataVisualization and Qt Graphs was kept mostly unchanged. However, there are some differences that need to be taken into consideration when migrating your application from Qt DataVisualization to Qt Graphs:
QML import statement
CMake module inclusion
qmake module inclusion
Widget application creation
Requirement to use OpenGL backend
Removed classes
Removed APIs
Changed APIs
QML Import Statement¶
The import statement in Qt DataVisualization:
import QtDataVisualization
is changed to:
import QtGraphs
for Qt Graphs.
CMake Module Inclusion¶
The inclusion in Qt DataVisualization:
find_package(Qt6 REQUIRED COMPONENTS DataVisualization) target_link_libraries(mytarget PRIVATE Qt6::DataVisualization)
is changed to:
find_package(Qt6 REQUIRED COMPONENTS Graphs) target_link_libraries(mytarget PRIVATE Qt6::Graphs)
for Qt Graphs.
Qmake Module Inclusion¶
The inclusion in Qt DataVisualization:
QT += datavisualization
is changed to:
QT += graphs
for Qt Graphs.
Widget Application Creation¶
To create a Graph in a widget application, change your code from:
Q3DBars *barGraph = new Q3DBars(); QWidget *barsWidget = new QWidget(); QWidget *container = QWidget::createWindowContainer(barGraph, barsWidget); auto *hLayout = new QHBoxLayout(barsWidget); hLayout->addWidget(container, 1);
to:
quickWidget = QQuickWidget() barGraph = Q3DBarsWidgetItem() barGraph.setWidget(quickWidget) hLayout = QHBoxLayout(quickWidget)
Requirement to Use OpenGL Backend¶
To use Qt Graphs 3D, you no longer need to force using the OpenGL backend:
// Remove this line qputenv("QSG_RHI_BACKEND", "opengl");
Qt Graphs uses Qt Quick 3D for rendering, and as such supports the rendering backends native to the platform it is being run on.
Removed classes¶
Q3DCamera
Q3DLight
Q3DObject
Q3DTheme
Removed APIs¶
hasContext
shadowsSupported
reflection
reflectivity
Changed APIs¶
optimizationHint
renderingMode
renderToImage
ColorGradient and ColorGradientStop
ThemeColor
Data APIs
Camera APIs
Theme APIs
Enums
optimizationHint¶
Legacy
is now the mode that was OptimizationDefault
in QtDataVisualization. Default
uses instancing, and should be used for all targets that support it.
renderingMode¶
RenderDirectToBackground_NoClear
has been removed, as it was already obsolete in QtDataVisualization in Qt 6.
renderToImage¶
renderToImage
now returns QSharedPointer<QQuickItemGrabResult>
instead of a QImage
, and does not take msaaSamples
as a parameter anymore.
ColorGradient and ColorGradientStop¶
ColorGradient
is now Gradient
and ColorGradientStop
GradientStop
.
ThemeColor¶
ThemeColor
is now Color
.
Data APIs¶
No need to create data arrays with new
anymore. For example, when data was created for bar graph in Qt DataVisualization, it was done like this:
// Qt DataVisualization approach. QBarDataRow *data = new QBarDataRow; *data << 1.0f << 3.0f << 7.5f << 5.0f << 2.2f;
Now, it is done like this:
// Qt Graphs approach. QBarDataRow data; data << 1.0f << 3.0f << 7.5f << 5.0f << 2.2f; series->dataProxy()->addRow(data);
Camera APIs¶
As Q3DCamera was removed, the required functions from it were moved. cameraPreset, cameraTargetPosition, cameraXRotation, cameraYRotation, cameraZoomLevel, wrapCameraXRotation, and wrapCameraYRotation
are now the parts of GraphsItem3D .
Theme APIs¶
As Q3DTheme was removed and the theming between 2D and 3D graphs unified, some of the required functions from it have been moved, and the rest can be found from the replacement, GraphsTheme . lightColor, ambientLightStrength, lightStrength, and shadowStrength
are now implemented on GraphsItem3D .
windowColor
was removed. backgroundColor
now does what windowColor
used to do, and a new function plotAreaBackgroundColor
replaces the functionality of what backgroundColor
previously did.
The generic color scheme of the whole graph is now controlled by a color scheme property, and series colors by a theme property. If color scheme is not explicitly set, it will follow the desktop theming (Light/Dark).
Enums¶
In Qt Graphs, all the enums are implemented as scoped enums, for example, for the QAbstract3DGraph::ShadowQualityLow
in Qt DataVisualization, the corresponding enum in Qt Graphs is QtGraphs3D::ShadowQuality::Low
.