Auf dieser Seite

Qt GUI Übersicht

Das Modul „ Qt GUI “ stellt Klassen für die Integration in das Fenstersystem, die Ereignisbehandlung, die Integration von OpenGL und OpenGL ES, 2D-Grafiken, grundlegende Bildverarbeitung, Schriftarten und Text bereit. Diese Klassen werden intern von den Benutzeroberflächentechnologien von Qt verwendet, können aber auch direkt genutzt werden, beispielsweise zum Schreiben von Anwendungen unter Verwendung von Low-Level-OpenGL-ES-Grafik-APIs.

Für Anwendungsentwickler, die Benutzeroberflächen erstellen, bietet Qt übergeordnete APIs wie „ Qt Quick “, die wesentlich besser geeignet sind als die im Modul „ Qt GUI “ enthaltenen Enabler.

Anwendungsfenster

Die wichtigsten Klassen im Modul „ Qt GUI “ sind „ QGuiApplication “ und „ QWindow “. Eine Qt-Anwendung, die Inhalte auf dem Bildschirm anzeigen möchte, muss diese verwenden. „ QGuiApplication “ enthält die Haupt-Ereignisschleife, in der alle Ereignisse aus dem Fenstersystem und anderen Quellen verarbeitet und weitergeleitet werden. Sie übernimmt zudem die Initialisierung und den Abschluss der Anwendung.

Die Klasse „ QWindow “ repräsentiert ein Fenster im zugrunde liegenden Fenstersystem. Sie stellt eine Reihe virtueller Funktionen zur Verfügung, um Ereignisse (QEvent) aus dem Fenstersystem zu verarbeiten, wie beispielsweise Touch-Eingaben, Sichtbarkeit, Fokus, Tastenanschläge und Geometrieänderungen.

2D-Grafik

Das Modul „ Qt GUI “ enthält Klassen für 2D-Grafiken, Bildbearbeitung, Schriftarten und fortgeschrittene Typografie.

Ein mit dem Oberflächentyp ` QSurface::RasterSurface ` erstelltes ` QWindow ` kann in Kombination mit ` QBackingStore ` und ` QPainter` verwendet werden, der hochoptimierten 2D-Vektorgrafik-API von Qt. ` QPainter ` unterstützt das Zeichnen von Linien, Polygonen, Vektorpfaden, Bildern und Text. Weitere Informationen finden Sie unter „Paint-System “ und im Beispiel „Rasterfenster“.

Qt kann Bilder mithilfe der Klassen „ QImage “ und „ QPixmap “ laden und speichern. Standardmäßig unterstützt Qt die gängigsten Bildformate, darunter unter anderem JPEG und PNG. Benutzer können über die Klasse „ QImageIOPlugin “ Unterstützung für weitere Formate hinzufügen. Weitere Informationen finden Sie unter „Lesen und Schreiben von Bilddateien“.

Die Typografie in Qt erfolgt über „ QTextDocument “, das die „ QPainter “-API in Kombination mit den Schriftklassen von Qt nutzt, vor allem „ QFont “. Anwendungen, die für die Text- und Schriftartverarbeitung eher Low-Level-APIs bevorzugen, können Klassen wie „ QRawFont “ und „ QGlyphRun “ verwenden.

RHI-Grafik

Das Qt Rendering Hardware Interface ist eine Abstraktion für hardwarebeschleunigte Grafik-APIs wie OpenGL, OpenGL ES, Direct3D, Metal und Vulkan.

Als Alternative zur direkten Verwendung von OpenGL oder Vulkan zum Rendern auf eine „ QWindow “ bieten „ QRhi “ und die zugehörigen Klassen eine portable, plattformübergreifende 3D-Grafik- und Rechen-API, ergänzt durch eine Pipeline zur Shader-Aufbereitung und -Transpilation. Auf diese Weise können Anwendungen eine direkte Abhängigkeit von einer einzigen und in manchen Fällen hersteller- oder plattformspezifischen 3D-API vermeiden.

Nachfolgend finden Sie eine Liste der wichtigsten RHI-bezogenen Klassen. Diese werden durch eine Reihe weiterer Klassen und Strukturen ergänzt.

Im RHI-Fenster-Beispiel finden Sie ein Einführungsbeispiel für die Erstellung einer portablen, plattformübergreifenden Anwendung, die mithilfe von ` QRhi` beschleunigtes 3D-Rendering auf einer ` QWindow ` durchführt.

Die direkte Arbeit mit „ QWindow “ ist die fortgeschrittenste und oft auch die flexibelste Art des Renderings mit der „ QRhi “-API. Es handelt sich jedoch um den niedrigsten Zugriffsebene-Ansatz, der insofern eingeschränkt ist, als die UI-Technologien von Qt, Widgets und „ Qt Quick “ überhaupt nicht genutzt werden. In vielen Fällen werden Anwendungen es vorziehen, das auf „ QRhi “ basierende Rendering in eine auf „ Qt Quick “ basierende Benutzeroberfläche zu integrieren. „ QWidget “ -basierte Anwendungen können das Fenster über ` QWidget::createWindowContainer()` als natives untergeordnetes Element in die Widget-Hierarchie einbetten, doch in vielen Fällen bietet ` QRhiWidget ` eine bequemere Möglichkeit, das auf ` QRhi` basierende Rendering in eine Widget-Benutzeroberfläche zu integrieren. ` Qt Quick ` stellt eigene Funktionen zur Erweiterung der 2D/3D-Szene mit benutzerdefiniertem Rendering auf Basis von ` QRhi` bereit.

Hinweis: Fürdie RHI-API-Familie gilt derzeit eine eingeschränkte Kompatibilitätsgarantie, im Gegensatz zu den regulären öffentlichen Qt-APIs. Weitere Informationen finden Sie unter QRhi.

3D-Matrix- und Vektorrechnung

Das Modul „ Qt GUI “ enthält außerdem einige mathematische Klassen, die bei den gängigsten mathematischen Operationen im Zusammenhang mit 3D-Grafiken helfen. Zu diesen Klassen gehören „ QMatrix4x4 “, „ QVector2D “, „ QVector3D “, „ QVector4D “ und „ QQuaternion “.

OpenGL- und OpenGL ES-Integration

QWindow unterstützt das Rendern mit OpenGL und OpenGL ES, je nachdem, was die jeweilige Plattform unterstützt. Das OpenGL-Rendering wird aktiviert, indem der Oberflächentyp des „ QWindow “ auf „ QSurface::OpenGLSurface “ gesetzt wird, die Formatangaben mit „ QSurfaceFormat “ ausgewählt werden und anschließend ein „ QOpenGLContext “ erstellt wird, um den nativen OpenGL-Kontext zu verwalten. Darüber hinaus verfügt Qt über „ QOpenGLPaintDevice “, das die Verwendung von OpenGL-beschleunigtem „ QPainter “-Rendering ermöglicht, sowie über Komfortklassen, die das Schreiben von OpenGL-Code vereinfachen und die Komplexität der Erweiterungsverwaltung sowie die Unterschiede zwischen OpenGL ES 2 und Desktop-OpenGL verbergen. Zu den Komfortklassen gehört „ QOpenGLFunctions “, mit der eine Anwendung alle OpenGL ES 2-Funktionen unter Desktop-OpenGL nutzen kann, ohne die OpenGL-Funktionszeiger manuell auflösen zu müssen. Dies ermöglicht die plattformübergreifende Entwicklung von Anwendungen für mobile oder eingebettete Geräte und stellt Klassen bereit, die native OpenGL-Funktionalität in eine einfachere Qt-API verpacken:

Um schließlich eine bessere Unterstützung für die neueren Versionen (3.0 und höher) von OpenGL zu gewährleisten, steht zudem ein Mechanismus für versionierte Funktions-Wrapper zur Verfügung: Die Klassenfamilie `QOpenGLFunction_N_N` stellt alle Funktionen einer bestimmten OpenGL-Version und eines bestimmten Profils bereit und ermöglicht so die einfache Entwicklung von Desktop-Anwendungen, die auf moderne, ausschließlich für den Desktop bestimmte OpenGL-Funktionen zurückgreifen.

Weitere Informationen finden Sie im Beispiel „OpenGL-Fenster“.

Ein mit dem „ QSurface::OpenGLSurface “ erstelltes „ QWindow “ kann in Kombination mit „ QPainter “ und „ QOpenGLPaintDevice “ verwendet werden, um hardwarebeschleunigte OpenGL-2D-Grafiken zu erzielen, wobei jedoch Abstriche bei der Bildqualität gemacht werden müssen.

Vulkan-Integration

Qt GUI unterstützt die Vulkan-API. Qt-Anwendungen erfordern das Vorhandensein des LunarG Vulkan SDK.

Unter Windows setzt das SDK die Umgebungsvariable „ VULKAN_SDK “, die vom Skript „ configure “ erkannt wird.

Unter Android wurden Vulkan-Header in API-Level 24 des NDK hinzugefügt.

Die wichtigsten Klassen für die Low-Level-Vulkan-Unterstützung sind:

Darüber hinaus stellt „ QVulkanWindow “ eine praktische Unterklasse von „ QWindow “ bereit, die den Einstieg in die Implementierung eines Vulkan-basierten Renderers für „ QWindow “ erleichtert. Die Verwendung dieser Hilfsklasse ist vollkommen optional; Anwendungen mit fortgeschritteneren Vulkan-basierten Renderern sollten stattdessen möglicherweise direkt eine „ QWindow “ vom Typ „ QSurface::VulkanSurface “ verwenden.

Weitere Informationen finden Sie im Beispiel „Hello Vulkan Widget “ und im Beispiel „Hello Vulkan Triangle“.

Drag & Drop

Qt GUI bietet Unterstützung für Drag & Drop. Weitere Informationen finden Sie in der Übersicht zu Drag & Drop.

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