Auf dieser Seite

Qt Data Visualization Übersicht

Das Modul „ Qt Data Visualization “ bietet die Möglichkeit, reaktionsschnelle, komplexe und dynamische 3D-Visualisierungen für analytisch anspruchsvolle Branchen wie die akademische Forschung und die Medizin zu entwickeln. Qt 3D „Data Visualization“ bietet 3D-Balken-, Streu- und Oberflächenvisualisierungen. Durch die Kombination von Benutzerinteraktion und Echtzeit-3D-Zeichnungsvisualisierungen lassen sich Benutzeroberflächen erstellen, die den Raum effektiv nutzen. Der Wechsel zwischen 3D- und 2D-Darstellung ermöglicht es, den Wert von 3D bei der Datenvisualisierung voll auszuschö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 Data Visualization 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 die jeweilige Visualisierung geeigneten Format akzeptiert. Weitere Informationen finden Sie unter „Qt Data Visualization: Datenverarbeitung“.

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 Data Visualization – Interaktion mit Daten“.

Hinweis: Das Modul „ Qt Data Visualization “ ist seit Qt 6.10 veraltet. Verwenden Sie für neue Projekte stattdessen das Qt Graphs Modul. „ Qt Graphs “ nutzt das native Rendering-Backend der jeweiligen Plattform (Metal unter macOS, DirectX unter Windows, OpenGL oder Vulkan unter Linux), um eine hardwarebeschleunigte Darstellung sowohl für 2D- als auch für 3D-Diagramme zu erreichen. Informationen zur Migration vom Modul „ Qt Data Visualization “ zum Modul „ Qt Graphs “ finden Sie unter „Qt Graphs: Migration from Qt DataVisualization “ oder im Qt-Academy-Kurs „Migrating to Qt Graphs “.

Diagrammtypen

Das Modul „ Qt Data Visualization “ bietet die folgenden 3D-Diagrammtypen:

Die Klasse `QAbstract3DGraph` ist eine Unterklasse von ` QWindow ` und stellt eine Render-Schleife für ihre eigenen Unterklassen bereit, die die verschiedenen Diagrammtypen implementieren: `Q3DBars`, `Q3DScatter` und `Q3DSurface`. Der Diagrammtyp bestimmt, wie die Daten dargestellt werden.

3D-Balkendiagramme

3D-Balkendiagramme stellen Daten als 3D-Balken dar, die nach Kategorien gruppiert sind. Die Klasse `Q3DBars` wird zum Erstellen eines Diagramms verwendet, während die Klassen `QBar3DSeries` und `QBarDataProxy` dazu dienen, Daten in das Diagramm einzufügen sowie die visuellen Eigenschaften des Diagramms zu steuern, wie beispielsweise den Zeichnungsmodus und die Schattierung. In QML sind die entsprechenden Typen „Bars3D“, „Bar3DSeries“ und „BarDataProxy“.

Schlichtes 3D-Balkendiagramm mit fünf grünen Balken unterschiedlicher Höhe auf einem Gitterboden

Weitere Informationen finden Sie unter „ How to construct a minimal Q3DBars graph “ sowie in den Beispielen zu einfachen Balkendiagrammen.

3D-Streudiagramme

3D-Streudiagramme stellen Daten als Sammlung von Punkten dar. Die Klasse `Q3DScatter` dient zum Erstellen eines Diagramms, während die Klassen `QScatter3DSeries` und `QScatterDataProxy` zum Einfügen von Daten in das Diagramm sowie zur Steuerung der visuellen Eigenschaften des Diagramms verwendet werden. In QML lauten die entsprechenden Typen Scatter3D, Scatter3DSeries und ScatterDataProxy.

Minimalistisches 3D-Streudiagramm mit drei grünen Kugeln, die in einem Drahtgitter-Raster angeordnet sind

Weitere Informationen finden Sie in den Beispielen „ How to construct a minimal Q3DScatter graph “ und „Simple Scatter Graph “.

3D-Oberflächendiagramme

3D-Oberflächendiagramme stellen Daten als 3D-Oberflächendiagramme dar. Die Klasse `Q3DSurface` dient zum Erstellen eines Diagramms, während die Klassen `QSurface3DSeries` und `QSurfaceDataProxy` dazu dienen, Daten in das Diagramm einzufügen sowie dessen visuelle Eigenschaften zu steuern. In QML sind die entsprechenden Typen `Surface3D`, `Surface3DSeries` und `SurfaceDataProxy`.

Minimalistisches 3D-Oberflächendiagramm, das eine grüne, gefaltete Kammoberfläche über einem Gitterboden zeigt

Weitere Informationen finden Sie in den Beispielen „ How to construct a minimal Q3DSurface graph “, „Graph Gallery“ und „Surface Graph Gallery “.

Verwendung von OpenGL zum Rendern von Daten

Es wird empfohlen, OpenGL 2.1 oder höher für die Datenwiedergabe zu verwenden. Bei Verwendung von OpenGL ES2 (einschließlich Angle-Builds unter Windows) werden die folgenden Funktionen nicht unterstützt:

  • Schatten
  • Antialiasing
  • Flat-Shading für Oberflächen
  • Volumetrische Objekte, da diese 3D-Texturen verwenden

Für den Software-Renderer steht nur die OpenGL ES2-Emulation zur Verfügung (d. h. bei Verwendung von „ QCoreApplication::setAttribute “ (Qt::AA_UseSoftwareOpenGL)).

Auswahl des Rendering-Modus

In QML können Sie die Eigenschaft ` AbstractGraph3D.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 halten sich die Grafiken nicht an die Z-Reihenfolge von QML-Elementen und können nicht teilweise transparent sein. Daher ist die Wahl des Rendering-Modus eine Abwägung zwischen Leistung und Qualität.

Qt Quick verwendet einen dedizierten Szenengraphen für die Datenrendering und ist daher die beste Wahl für die Datenvisualisierung.

3D-Achsen

Qt Data Visualization unterstützt die folgenden Achsenarten:

  • Wertachse
  • 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 `AbstractAxis3D`.

Einer Wertachse können ein Wertebereich sowie die Anzahl der Segmente und Untersegmente zugewiesen werden, in die der Bereich unterteilt werden soll. Zwischen den einzelnen Segmenten werden Beschriftungen eingezeichnet. Zwischen jedem Segment und jedem Untersegment werden Gitterlinien eingezeichnet. Die Wertachse wird mithilfe der Klasse `QValue3DAxis` oder des QML-Typs `ValueAxis3D` implementiert.

Eine Kategorieachse verfügt über benannte Bereiche und einstellbare Bereichsbreiten. Sie wird basierend auf der durch den Achsenbereich definierten Größe des Datenfensters in gleich große Kategorien unterteilt. Beschriftungen werden an den Positionen der Kategorien gezeichnet, sofern vorhanden. Gitterlinien werden zwischen den Kategorien gezeichnet, sofern sie sichtbar sind. Eine Kategorieachse wird mithilfe der Klasse `QCategory3DAxis` oder des QML-Typs `CategoryAxis3D` 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 wurden.

Mit Achsenformatierern lassen sich die Gitterlinien und Beschriftungen der Wertachsen anpassen. Die Klasse `QValue3DAxisFormatter` und der QML-Typ `ValueAxis3DFormatter` stellen Formatierungsregeln für eine lineare 3D-Wertachse bereit. Die Klasse `QLogValue3DAxisFormatter` und der QML-Typ `LogValueAxis3DFormatter` stellen Formatierungsregeln für eine logarithmische 3D-Wertachse bereit.

Polare horizontale Achsen können für Flächen- und Streudiagramme verwendet werden, indem die Eigenschaft ` polar ` gesetzt wird.

3D-Themen

Ein Thema ist eine integrierte Sammlung von Einstellungen zum UI-Stil, die auf alle visuellen Elemente eines Diagramms angewendet werden, wie z. B. Farben, Schriftarten und Sichtbarkeit der Elemente sowie die Intensität des Lichts und des Umgebungslichts.

Qt Charts Es sind die folgenden vordefinierten Themen enthalten, die als Grundlage für benutzerdefinierte Themen dienen können:

  • „Qt“ ist ein helles Design mit Grün als Grundfarbe.
  • „Primärfarben“ ist ein helles Design mit Gelb als Grundfarbe.
  • „Digia“ ist ein helles Design mit Grau als Grundfarbe.
  • „Stone Moss“ ist ein mittel-dunkles Design mit Gelb als Grundfarbe.
  • „Army Blue“ ist ein mittelhelles Design mit Blau als Grundfarbe.
  • „Retro“ ist ein mittelhelles Design mit Braun als Grundfarbe.
  • „Ebony“ ist ein dunkles Design mit Weiß als Grundfarbe.
  • „Isabelle“ ist ein dunkles Design mit Gelb als Grundfarbe.
  • „Benutzerdefiniert“ ist das Standard-Design, das zur individuellen Anpassung vorgesehen ist. Weitere Informationen finden Sie unter Default Theme.

Benutzerdefinierte Designs können auch von Grund auf neu erstellt werden.

Wenn ein Diagramm die Daten mehrerer Datenreihen anzeigt, können einige Einstellungen für jede Reihe separat festgelegt werden. So lassen sich beispielsweise unterschiedliche Farbverläufe für verschiedene Ebenen des Diagramms festlegen, um es realistischer darzustellen. Ein Beispiel finden Sie in der Galerie für Oberflächendiagramme.

Anpassen von 3D-Szenen

Eine 3D-Szene wird mithilfe der Klasse `Q3DScene` oder des QML-Typs `Scene3D` implementiert. Eine Szene enthält eine einzelne aktive Kamera, die mithilfe der Klasse „Q3DCamera“ oder des QML-Typs „Camera3D“ implementiert wird, sowie eine einzelne aktive Lichtquelle, die mithilfe der Klasse „Q3DLight“ oder des QML-Typs „Light3D“ implementiert wird. Die Lichtquelle wird immer relativ zur Kamera positioniert. Standardmäßig folgt die Lichtposition automatisch der Kamera.

Die Kamera kann durch Angabe ihrer voreingestellten Position, Drehung und Zoomstufe angepasst werden. Ein Beispiel finden Sie unter „Einfaches Streudiagramm“.

Anpassen von Elementen

Qt Data Visualization verfügt über vordefinierte Mesh-Typen für Balken, Elemente und Flächen. Der Mesh-Typ bestimmt, wie ein Balken, ein Element oder eine Fläche in einem Diagramm dargestellt wird. Ein benutzerdefiniertes Mesh kann als Wavefront-OBJ-Geometriedatei angegeben werden. Für mehr Vielfalt kann ein Quaternion für die Mesh-Drehung festgelegt werden.

Neben der Anpassung einzelner Elemente können die Klasse `QCustom3DItem` oder der QML-Typ `Custom3DItem` verwendet werden, 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.

Die Klasse `QCustom3DVolume` und der QML-Typ `Custom3DVolume` können verwendet werden, um volumengestützte Objekte zu erstellen, die einem Diagramm hinzugefügt werden sollen. Ein volumengestütztes 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 festgelegten Text, Schriftart, Position, Skalierung und Drehung. Die Farben der Beschriftungen, Rahmen und Hintergründe werden durch das aktive Design bestimmt.

© 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.