Qt Graphs Überblick über 3D
Das Modul „ Qt Graphs “ bietet die Möglichkeit, reaktionsschnelle, komplexe und dynamische 3D-Diagramme für analytisch anspruchsvolle Branchen wie die akademische Forschung und die Medizin zu entwickeln. „ Qt Graphs “ stellt 3D-Balken-, Streu- und Flächendiagramme bereit. Durch die Kombination von Benutzerinteraktion und Echtzeit-3D-Diagrammdarstellung lassen sich Benutzeroberflächen erstellen, die den verfügbaren Raum effektiv nutzen. Durch den Wechsel zwischen 3D- und 2D-Darstellung lässt sich der Nutzen von 3D bei der Datenvisualisierung voll ausschöpfen.
Das Erscheinungsbild der Diagramme lässt sich durch die Verwendung vordefinierter Designs oder durch die Definition neuer Designs anpassen. Darüber hinaus können Szenen durch die Festlegung von Kameraeinstellungen angepasst werden, und einzelne Elemente lassen sich mithilfe vordefinierter oder benutzerdefinierter Meshes anpassen.
Qt Graphs bietet vorgefertigte Daten-Proxys, mit denen Daten aus Qt-Elementmodellen und Höhenkarten visualisiert werden können. Jeder Diagrammtyp verfügt über einen grundlegenden Proxy-Typ, der Daten in einem für dieses Diagramm geeigneten Format akzeptiert. Weitere Informationen finden Sie unter „Qt Graphs: Datenverarbeitung mit 3D“.
Endbenutzer können auf verschiedene Weise mit den in Diagrammen dargestellten Daten interagieren, darunter das Drehen von Diagrammen, das Vergrößern und Verkleinern von Daten, das Auswählen von Elementen sowie das Anzeigen von 2D-Schnitten der 3D-Daten zur besseren Lesbarkeit. Weitere Informationen finden Sie unter Qt Graphs Interacting with Data in 3D.
Diagrammtypen
Das Modul „ Qt Graphs “ bietet die folgenden 3D-Diagrammtypen:
Die Klasse „ Q3DGraphsWidgetItem “ stellt eine Widget-API für ihre eigenen Unterklassen bereit: „ Q3DBarsWidgetItem “, „ Q3DScatterWidgetItem “ und „ Q3DSurfaceWidgetItem “, die die verschiedenen Diagrammtypen implementieren: Balken-, Streu- und Flächendiagramme. Der Diagrammtyp bestimmt, wie die Daten dargestellt werden.
Die gesamte Darstellung erfolgt in „ QQuickGraphsItem “, das von „ QQuick3DViewport “ erbt, welches wiederum mithilfe von „ QtQuick3D “ eine „ View3D “ bereitstellt. Es verfügt über eigene Unterklassen für „ Bars3D “, „ Scatter3D “ und „ Surface3D “.
3D-Balkendiagramme
3D-Balkendiagramme stellen Daten als 3D-Balken dar, die nach Kategorien gruppiert sind. Zur Erstellung eines Diagramms wird die Klasse „ Q3DGraphsWidgetItem “ verwendet. Die Klassen „ QBar3DSeries “ und „ QBarDataProxy “ dienen dazu, Daten für das Diagramm festzulegen und die visuellen Eigenschaften des Diagramms zu steuern, wie beispielsweise den Zeichenmodus und die Schattierung. In QML sind die entsprechenden Typen „ Bars3D “, „ Bar3DSeries “ und „ BarDataProxy “.

Weitere Informationen finden Sie unter „ How to construct a minimal Q3DBarsWidgetItem graph “ und in den Beispielen zu einfachen Balkendiagrammen.
3D-Streudiagramme
3D-Streudiagramme stellen Daten als Punktmenge oder als Spline dar. Zum Erstellen eines Diagramms wird die Klasse „ Q3DScatterWidgetItem “ verwendet. Die Klassen „ QScatter3DSeries “ oder „ QSpline3DSeries “ sowie „ QScatterDataProxy “ dienen dazu, Daten dem Diagramm zuzuweisen und dessen visuelle Eigenschaften zu steuern. In QML sind die entsprechenden Typen „ Scatter3D “, „ Scatter3DSeries “, „ Spline3DSeries “ und „ ScatterDataProxy “.

Weitere Informationen finden Sie unter „ How to construct a minimal Q3DScatterWidgetItem graph “ und in den Beispielen zu einfachen Streudiagrammen.
3D-Oberflächendiagramme
3D-Oberflächendiagramme stellen Daten als 3D-Oberflächendiagramme dar. Zum Erstellen eines Diagramms wird die Klasse ` Q3DSurfaceWidgetItem ` verwendet. Die Klassen ` QSurface3DSeries ` und ` QSurfaceDataProxy ` dienen dazu, Daten in das Diagramm einzufügen und die visuellen Eigenschaften des Diagramms zu steuern. In QML lauten die entsprechenden Typen ` Surface3D`, ` Surface3DSeries` und ` SurfaceDataProxy`.

Weitere Informationen finden Sie unter „ How to construct a minimal Q3DSurfaceWidgetItem graph “, in der „Graph Gallery“ sowie in den Beispielen der „Surface Graph Gallery “.
Verwendung von OpenGL ES zum Rendern von Daten
Qt Graphs basiert auf QtQuick3D, das heißt, „ Qt Graphs “ nutzt das native Backend der Zielplattform für das Rendering. Sollte OpenGL ES2 jedoch auf Zielplattformen verwendet werden, die keine höheren Versionen wie OpenGL ES3 oder Vulkan unterstützen, werden die folgenden Funktionen nicht unterstützt:
- Volumetrische Objekte, da diese 3D-Texturen verwenden
- Instanziierung – das bedeutet, dass „ QtGraphs3D::OptimizationHint::Default “ nicht funktioniert und stattdessen „ QtGraphs3D::OptimizationHint::Legacy “ verwendet werden muss.
Auswahl des Rendering-Modus
In QML können Sie die Eigenschaft ` GraphsItem3D.RenderingMode ` festlegen, um zu bestimmen, ob das Diagramm direkt auf dem Fensterhintergrund oder auf einer Offscreen-Oberfläche gerendert wird, die dann während des normalen QML-Element-Renderings gezeichnet wird.
Hintergrund-Rendering-Modi bieten eine etwas bessere Leistung als der indirekte Rendering-Modus, allerdings auf Kosten eines nicht standardmäßigen QML-Verhaltens. Beispielsweise unterstützen die Diagramme kein Antialiasing. Daher ist die Wahl des Rendering-Modus eine Abwägung zwischen Leistung und Qualität.
Qt Quick verwendet einen eigenen Szenengraphen für die Datenwiedergabe und ist daher die beste Wahl für Diagramme.
3D-Achsen
Qt Graphs unterstützt die folgenden Achsenarten:
- Werteachse
- Kategorieachse
Eine Achse kann so eingerichtet werden, dass sie eine Linie oder ein Raster anzeigt. Beide Achsenarten sind Spezialisierungen der Klasse „ QAbstract3DAxis “ oder des QML-Typs „ Abstract3DAxis “.
Bei einer Wertachse können Sie einen Wertebereich sowie die Anzahl der Segmente und Untersegmente festlegen, um den Bereich zu unterteilen. Standardmäßig werden zwischen den einzelnen Segmenten Beschriftungen eingezeichnet. Standardmäßig werden zwischen jedem Segment und jedem Untersegment Gitterlinien eingezeichnet. Die Wertachse wird mithilfe der Klasse „ QValue3DAxis “ oder des QML-Typs „ Value3DAxis “ implementiert.
Eine Kategorieachse verfügt über benannte Bereiche und einstellbare Bereichsbreiten. Sie wird auf der Grundlage der durch den Achsenbereich definierten Datenfenstergröße in gleich große Kategorien unterteilt. Beschriftungen werden standardmäßig an den Positionen der Kategorien eingezeichnet, sofern vorhanden. Gitterlinien werden standardmäßig zwischen den Kategorien eingezeichnet. Eine Kategorieachse wird mithilfe der Klasse „ QCategory3DAxis “ oder des QML-Typs „ Category3DAxis “ implementiert.
Wenn für ein Diagramm keine Achsen explizit festgelegt sind, werden temporäre Standardachsen ohne Beschriftungen erstellt. Diese Standardachsen können über Achsen-Accessoren geändert werden; sobald jedoch eine Achse für eine bestimmte Ausrichtung explizit festgelegt wird, wird die Standardachse für diese Ausrichtung gelöscht.
Alle Diagrammtypen unterstützen die gleichzeitige Darstellung mehrerer Reihen. Die Reihen müssen nicht alle die gleiche Anzahl an Zeilen und Spalten enthalten. Zeilen- und Spaltenbeschriftungen werden aus der ersten hinzugefügten Reihe übernommen, sofern sie nicht explizit für die Zeilen- und Spaltenachsen definiert sind.
Mit Achsenformatierern lassen sich Rasterlinien und Beschriftungen der Werteachsen anpassen. Die Klasse „ QValue3DAxisFormatter “ und der QML-Typ „ Value3DAxisFormatter “ stellen Formatierungsregeln für eine lineare 3D-Werteachse bereit. Die Klasse „ QLogValue3DAxisFormatter “ und der QML-Typ „ LogValue3DAxisFormatter “ stellen Formatierungsregeln für eine logarithmische 3D-Werteachse bereit.
Polare horizontale Achsen können für Flächen- und Streudiagramme verwendet werden, indem die Eigenschaft „ polar “ gesetzt wird. Sie kann auch für Balkendiagramme festgelegt werden, führt jedoch zu einer Warnmeldung und wird ignoriert.
Anpassen von 3D-Szenen
Da „ Qt Graphs “ auf „ QtQuick3D “ aufbaut, ist es möglich, „ QtQuick3D “-Szenen in „ Qt Graphs “-Szenen zu integrieren. Weitere Informationen finden Sie unter „Qt Graphs -Integration mit Qt Quick 3D “.
Anpassen von Elementen
Qt Graphs verfügt über vordefinierte Gittertypen für Balken- und Streudiagrammelemente. Der Gittertyp bestimmt, wie ein Balken- oder Streudiagrammelement in einem Diagramm dargestellt wird. Sie können auch eine benutzerdefinierte Geometrie als Gitterdatei angeben. Weitere Informationen finden Sie unter QAbstract3DSeries::userDefinedMesh(). Für mehr Vielfalt kann ein Quaternion für die Gitterrotation festgelegt werden.
Zusätzlich zur Anpassung einzelner Elemente können Sie die Klasse „ QCustom3DItem “ oder den QML-Typ „ Custom3DItem “ verwenden, um benutzerdefinierte Elemente zu Diagrammen hinzuzufügen. Die Elemente verfügen über ein benutzerdefiniertes Gitter, eine Position, eine Skalierung, eine Drehung und eine optionale Textur.
Verwenden Sie die Klasse „ QCustom3DVolume “ und den QML-Typ „ Custom3DVolume “, um volumengenerierte Objekte zu erstellen, die einem Diagramm hinzugefügt werden sollen. Ein volumengeneriertes Objekt ist ein Quader mit einer 3D-Textur. Für das Volumen werden drei Schnittebenen unterstützt, jeweils eine entlang jeder Hauptachse des Volumens.
Die Klasse „ QCustom3DLabel “ und der QML-Typ „ Custom3DLabel “ implementieren benutzerdefinierte Beschriftungen mit dem angegebenen Text, der Schriftart, der Position, der Skalierung und der Drehung. Das aktive Design bestimmt die Farben, Rahmen und den Hintergrund der Beschriftungen.
Behandlung benutzerdefinierter Eingaben
Qt Graphs implementiert Standard-Eingabehandler für typische Aktionen wie Auswählen, Drehen und Zoomen. Um anstelle der Standard-Eingabehandler benutzerdefinierte zu implementieren, überschreiben Sie die erforderlichen Eingabesignale.
onTapped: {
// Disable the default input handler
unsetDefaultTapHandler()
// Implement own custom event handler
console.log("Custom tap event handler")
}© 2026 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.