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.