Grafiken
Plattformübergreifende Anwendungen können Qt zur Anzeige grafischer Elemente verwenden. Qt abstrahiert die zugrunde liegenden Grafik-APIs der Plattformen, so dass sich die Entwickler auf den Anwendungscode konzentrieren können.
Das Qt Rendering Hardware Interface (RHI) übersetzt 3D-Grafikaufrufe von Qt-Anwendungen in die verfügbaren Grafik-APIs der Zielplattform.
Die unterstützten Grafik-APIs sind:
- OpenGL (Version 2.1 und höher)
- OpenGL ES (Version 2.0 und höher)
- Vulkan (Version 1.0 und höher)
- Direct3D 11 (Version 11.1 und höher)
- Direct3D 12 (Version 12.0 und höher)
- Metal (Version 1.2 und höher)
Grafiken in Qt Quick
Qt Quick Anwendungen verwenden einen Szenengraphen für das Rendering. Der Szenengraphen-Renderer kann effiziente Grafikaufrufe erzeugen und die Leistung steigern. Der Szenegraph verfügt über eine zugängliche API, die Ihnen die Flexibilität bietet, komplexe, aber schnelle Grafiken zu erstellen.
Die Seiten in der folgenden Liste enthalten weitere Informationen über das Rendering von Qt Quick Anwendungen.
- Qt Quick Szenengrafik
- Szenengraph und Rendering
- Qt Quick Scene Graph Standard-Renderer
- Erweitern des Szenegraphen mit QRhi-basiertem und nativem 3D-Rendering - Wie man von der Anwendung bereitgestellte Grafikbefehle (OpenGL, Vulkan, Direct3D, etc.) in einen Qt Quick Szenegraphen integriert.
Auswahl eines Rendering-Pfades
Qt verwendet, wann immer möglich, die Grafik-APIs der Zielplattform. Es ist jedoch möglich, den Rendering-Pfad von Qt mit einer bestimmten API einzurichten. In vielen Fällen kann die Wahl einer bestimmten API die Leistung erhöhen und ermöglicht es den Entwicklern, auf einer Plattform zu arbeiten, die eine bestimmte Grafik-API hat. Besuchen Sie die Seite Rendern über das Qt Rendering Hardware Interface, um zu erfahren, wie man den Rendering-Pfad in QQuickWindow einstellt.
3D-Grafik mit Qt Quick 3D
Qt Quick 3D ist ein Add-on, das eine High-Level-API für die Erstellung von 3D-Inhalten und 3D-Benutzeroberflächen auf der Basis von Qt Quick bietet. Es erweitert den Qt Quick Scene Graph, mit dem Sie 3D-Inhalte in 2D-Anwendungen implementieren können Qt Quick.
Shader-Effekte
Qt Shader Tools bietet ein Werkzeug, QSB, um Vertex- und Fragment-Shader in ein Paket für Qt Quick Schnittstellen zu übersetzen. Insbesondere der ShaderEffect QML-Typ und QSGMaterial Unterklassen können die Ausgabe von QSB verwenden. Qt Quick 3D hat ein eigenes Framework für den Import von Shadern in 3D-Szenen.
Die folgende Liste enthält Informationen über Shader-Effekte.
- Qt Shader Tools
- Programmierbare Materialien, Effekte, Geometrie und Texturdaten - Materialien und Shader in Qt Quick 3D
High-Level-Grafik mit Qt GUI
Qt GUI bietet ein High-Level-Fenster-, Mal- und Typografiesystem. QPainter bietet eine API zum Zeichnen von Vektorgrafiken, Text und Bildern auf verschiedene Oberflächen oder QPaintDevice Instanzen, wie QImage, QOpenGLPaintDevice, QWidget und QPrinter. Für Qt Widgets Benutzeroberflächen verwendet Qt einen Software-Renderer.
Die folgende Liste enthält Informationen über Qt GUIs High-Level-Zeichen-APIs.
Low-Level-Grafiken mit Qt GUI
Qt GUI bietet plattformübergreifende Enabler für die Verwaltung von OpenGL-Kontexten und Vulkan-Instanzen. Anwendungen, die Rendering direkt mit OpenGL, OpenGL ES oder Vulkan durchführen, können QOpenGLContext, QOpenGLFunctions, QVulkanInstance, QVulkanFunctions und QVulkanDeviceFunctions verwenden, um Kontexte und Instanzen zu verwalten und auf portable Weise auf die OpenGL- und Vulkan-API-Funktionen zuzugreifen.
Qt GUI bietet auch die Qt Rendering Hardware Interface (RHI)-Familie von APIs, wie QRhi und QShader, für Anwendungen, die das Rendering mit der portablen, plattformübergreifenden 3D-Rendering-Infrastruktur durchführen möchten, die Qt selbst verwendet, um den Qt Quick Szenengraphen und die Qt Quick 3D Rendering Engine zu implementieren. Diese Klassen werden als "halb-öffentliche" APIs mit einem begrenzten Kompatibilitätsversprechen angeboten, ähnlich wie die Qt Platform Abstraction Klassen. Die QRhi Klassen werden jedoch mit einer vollständigen Dokumentation geliefert. Sehen Sie sich die Klasse QRhi an, um den Einstieg zu finden.
Das Qt GUI Modul allein ermöglicht es, einen QWindow oder einen Offscreen-Puffer, wie z.B. einen QRhiTexture, mit dem QRhi-basierten Rendering anzusteuern. Bei Benutzeroberflächen, die auf QWidget oder QML (Qt Quick) basieren, ist die Arbeit mit einem QWindow, das von einer nativen Plattform unterstützt wird, nicht immer der bequemste Weg. Aus diesem Grund bietet das Qt Widgets Modul QRhiWidget, während Qt Quick QQuickRhiItem zur Verfügung stellt. Diese Basisklassen ermöglichen die bequeme Erstellung von QWidget oder QQuickItem Unterklassen, deren Instanzen ein portables QRhi-basiertes Rendering in eine Textur durchführen, die dann automatisch mit den Widgets oder der Qt Quick Szene zusammengesetzt wird.
Qt OpenGL Modul
Das Qt OpenGL Modul ist für Anwendungen gedacht, die OpenGL-Zugriff benötigen. Dieses Modul soll die Kompatibilität mit Qt 5-Anwendungen und mit Qt GUI gewährleisten. Für Benutzeroberflächen, die QWidget verwenden, ist QOpenGLWidget ein Widget, das OpenGL-Szenen hinzufügen kann.
Qt unterstützt sowohl das direkte Drucken auf aktuellen Druckern, lokal oder im Netzwerk, als auch die Erzeugung von PDF-Ausgaben. Wie man mit Qt druckt, wird ausführlich auf der Qt Print Support Seite beschrieben.
Bilder
Qt unterstützt das bequeme Lesen, Schreiben und Manipulieren von Bildern durch die Klasse QImage. Für eine feinere Kontrolle darüber, wie Bilder geladen oder gespeichert werden, können Sie die Klassen QImageReader und QImageWriter verwenden. Um Unterstützung für zusätzliche Bildformate außerhalb der von Qt bereitgestellten hinzuzufügen, können Sie Bildformat-Plugins mit den Klassen QImageIOHandler und QImageIOPlugin erstellen.
Siehe die Seite Lesen und Schreiben von Bilddateien für weitere Informationen.
© 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.