Qt Graphs Migration von Qt DataVisualization
Die API und Funktionalität zwischen Qt DataVisualization und Qt Graphs wurde weitgehend unverändert beibehalten. Es gibt jedoch einige Unterschiede, die bei der Migration Ihrer Anwendung von Qt DataVisualization auf Qt Graphs berücksichtigt werden müssen:
- QML-Import-Anweisung
- CMake-Modul-Einbindung
- Einbindung von qmake-Modulen
- Erstellung von Widget-Anwendungen
- Erfordernis der Verwendung eines OpenGL-Backends
- Entfernte Klassen
- Entfernte APIs
- Geänderte APIs
QML-Import-Anweisung
Die Import-Anweisung in Qt DataVisualization:
import QtDataVisualization
wird geändert in:
import QtGraphs
für Qt Graphs.
CMake-Modul-Einbindung
Die Einbindung in Qt DataVisualization:
find_package(Qt6 REQUIRED COMPONENTS DataVisualization)
target_link_libraries(mytarget PRIVATE Qt6::DataVisualization)
wird geändert in:
find_package(Qt6 REQUIRED COMPONENTS Graphs)
target_link_libraries(mytarget PRIVATE Qt6::Graphs)
für Qt Graphs.
Qmake-Modul-Einbindung
Die Einbindung in Qt DataVisualization:
QT += datavisualization
wird geändert in:
QT += graphs
für Qt Graphs.
Erstellung von Widget-Anwendungen
Um einen Graphen in einer Widget-Anwendung zu erstellen, ändern Sie Ihren Code von:
Q3DBars *barGraph = new Q3DBars(); QWidget *barsWidget = new QWidget(); QWidget *container = QWidget::createWindowContainer(barGraph, barsWidget); auto *hLayout = new QHBoxLayout(barsWidget); hLayout->addWidget(container, 1);
zu:
QQuickWidget *quickWidget = new QQuickWidget(); Q3DBarsWidgetItem *barGraph = new Q3DBarsWidgetItem(); barGraph->setWidget(quickWidget); auto *hLayout = new QHBoxLayout(quickWidget);
Erfordernis der Verwendung von OpenGL Backend
Um Qt Graphs 3D zu verwenden, müssen Sie die Verwendung des OpenGL-Backends nicht mehr erzwingen:
// Remove this line qputenv("QSG_RHI_BACKEND", "opengl");
Qt Graphs verwendet Qt Quick 3D für das Rendering und unterstützt daher die Rendering-Backends der Plattform, auf der es ausgeführt wird.
Entfernte Klassen
- Q3DCamera
- Q3DLight
- Q3DObject
- Q3DTheme
Entfernte APIs
- hasContext
- shadowsSupported
- Reflexion
- Reflektivität
Geänderte APIs
- OptimierungHinweis
- RenderingModus
- renderToImage
- Farbverlauf und ColorGradientStop
- ThemeColor
- Daten-APIs
- Kamera-APIs
- Theme-APIs
- Enums
OptimierungHinweis
Legacy
ist nun der Modus, der OptimizationDefault
in QtDataVisualization war. Default
verwendet Instanzierung und sollte für alle Ziele verwendet werden, die es unterstützen.
renderingMode
RenderDirectToBackground_NoClear
wurde entfernt, da er bereits in QtDataVisualization in Qt 6 veraltet war.
renderToImage
renderToImage
gibt nun QSharedPointer<QQuickItemGrabResult>
anstelle von QImage
zurück und nimmt msaaSamples
nicht mehr als Parameter.
ColorGradient und ColorGradientStop
ColorGradient
sind jetzt Gradient
und ColorGradientStop
GradientStop
.
ThemeColor
ThemeColor
ist jetzt Color
.
Daten-APIs
Es ist nicht mehr notwendig, Datenarrays mit new
zu erstellen. Wenn z.B. Daten für ein Balkendiagramm in Qt DataVisualization erstellt wurden, wurde dies so gemacht:
// Qt DataVisualization approach. QBarDataRow *data = new QBarDataRow; *data << 1.0f << 3.0f << 7.5f << 5.0f << 2.2f;
Jetzt wird es so gemacht:
// Qt Graphs approach. QBarDataRow data; data << 1.0f << 3.0f << 7.5f << 5.0f << 2.2f; series->dataProxy()->addRow(data);
Kamera-APIs
Da Q3DCamera entfernt wurde, wurden die benötigten Funktionen daraus verschoben. cameraPreset, cameraTargetPosition, cameraXRotation, cameraYRotation, cameraZoomLevel, wrapCameraXRotation, and wrapCameraYRotation
sind nun die Teile von GraphsItem3D.
Themen-APIs
Da Q3DTheme entfernt und das Theming zwischen 2D- und 3D-Grafiken vereinheitlicht wurde, wurden einige der benötigten Funktionen daraus verschoben, und der Rest ist im Ersatz GraphsTheme zu finden. lightColor, ambientLightStrength, lightStrength, and shadowStrength
sind nun auf GraphsItem3D implementiert.
windowColor
wurde entfernt. backgroundColor
macht jetzt das, was windowColor
vorher gemacht hat, und eine neue Funktion plotAreaBackgroundColor
ersetzt die Funktionalität von backgroundColor
, die vorher gemacht wurde.
Das allgemeine Farbschema des gesamten Graphen wird nun durch die Eigenschaft color scheme und die Serienfarben durch die Eigenschaft theme gesteuert. Wenn das Farbschema nicht explizit festgelegt ist, folgt es dem Desktop-Thema (hell/dunkel).
Aufzählungen
In Qt Graphs sind alle Enums als scoped enums implementiert, z.B. für QAbstract3DGraph::ShadowQualityLow
in Qt DataVisualization ist das entsprechende Enum in Qt Graphs QtGraphs3D::ShadowQuality::Low
.
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.