Qt-Plattform-Abstraktion
Die Qt Platform Abstraction (QPA) ist die wichtigste Plattformabstraktionsschicht in Qt.
Die API kann durch das QPlatform*
Klassenpräfix identifiziert werden und wird für die Implementierung höherer Klassen verwendet, die typischerweise in Qt GUIzu finden sind, z.B. QPlatformWindow
für die Integration von Fenstersystemen, die über QWindow zugänglich sind, oder QPlatformTheme
für eine tiefergehende Thematisierung und Integration der Plattform, die über QStyleHint und QStyle zugänglich sind.
Es gibt keine Quellcode- oder Binärkompatibilitätsgarantien für die QPA-Klassen, was bedeutet, dass die API garantiert nur mit der Qt-Version funktioniert, für die sie entwickelt wurde. API-Änderungen werden jedoch nur in kleineren Versionen vorgenommen. (5.1, 5.2, und so weiter.)
API-Übersicht
- Integration von Fenstersystemen
- QPlattformIntegration
- QPlatformAccessibility
- QPlatformBackingStore
- QPlattformZwischenablage
- QPlattformCursor
- QPlattformDrag
- QPlatformFontDatabase
- QPlattformGrafikPuffer
- QPlattformEingabeKontext
- QPlatformOffscreenSurface
- QPlattformOpenGLContext
- QPlattformBildschirm
- QPlatformServices
- QPlatformSharedGraphicsCache
- QPlatformSurface
- QPlattformFenster
- Stil/Theming
- QPlattformThema
- Plattform-Paletten
- Plattform-Schriftarten
- Themen-Hinweise
- Native Dialoge und Menüs
- QPlatformDialogHelper
- QPlatformMenu
- QPlatformMenuBar
- QPlatformMenuItem
Hinweis: Zusätzlich zu den QPA-APIs gibt es viele andere Plattformabstraktionen in Qt, zum Beispiel die Event-Dispatcher-Abstraktionen in Qt Core und die Rendering-Hardware-Abstraktionen in RHI. Die QPA-APIs konzentrieren sich hauptsächlich auf die Integration von Fenstersystemen und die damit verbundene Unterstützung.
QPA-Plugins
Konkrete Implementierungen der oben aufgeführten Schnittstellen finden sich in QPA-Plugins oder Plattform-Plugins, die Unterstützung für die verschiedenen Plattformen bieten, auf denen Qt läuft. QPA-Plugins werden durch Unterklassifizierung der QPlatform*
-Klassen implementiert.
Die folgende Tabelle gibt einen Überblick über die verfügbaren Plattform-Plugins:
Plugin Name | Plugin Klassenname | Beschreibung |
---|---|---|
qandroid | QAndroidPlatformIntegration | Android-Unterstützung |
qbsdfb | QBsdFbIntegration | BsdFb-Unterstützung |
qcocoa | QCocoaIntegrationPlugin | macOS-Unterstützung |
qdirect2d | QWindowsDirect2DIntegrationPlugin | Ähnlich wie das qwindows Plugin, ersetzt aber die Raster-Paint-Engine durch eine Direct2D-basierte Paint-Engine für QPixmap und QBackingStore. |
qdirectfb | QDirectFbIntegrationPlugin | DirectFB konzentriert sich auf Oberflächen, die das Äquivalent zu QPaintDevice sind. |
qeglfs | QEglFSIntegrationPlugin | EGLFS-Unterstützung für eingebettete Linux-Geräte. |
qhaiku | QHaikuIntegration | Haiku-Unterstützung |
qios | QIOSIntegrationPlugin | iOS-Unterstützung |
qlinuxfb | QLinuxFbIntegrationPlugin | LinuxFB-Unterstützung für eingebettete Linux-Geräte. |
qvnc | QVncIntegration | VNC-Unterstützung |
qwayland |
| Wayland-Unterstützung |
qwindows | QWindowsIntegrationPlugin | Windows-Unterstützung |
qxcb | QXcbIntegrationPlugin | Unterstützung für X Window System (X11) |
Auswählen eines QPA-Plugins
Qt wählt je nach Plattform ein Standard-QPA-Plugin aus. Die Umgebungsvariable QT_QPA_PLATFORM
und das Kommandozeilenargument -platform
ermöglichen es Ihnen, diese Vorgabe zu überschreiben. Siehe QGuiApplication für weitere Details.
Ein QPA-Plugin schreiben
Zur Zeit gibt es keine ausführliche Anleitung zum Schreiben von QPA-Plugins. Es gibt jedoch zwei minimale Plugins, die mit Qt für Tests und andere spezielle Zwecke ausgeliefert werden und die Sie als Beispiele verwenden können:
qtbase/src/plugins/platforms/minimal/
qtbase/src/plugins/platforms/minimalegl/
Das qminimal
Plugin wird für Werkzeuge verwendet, die gegen Qt GUIverlinken, aber keine Integration in das Fenstersystem benötigen (zum Beispiel qmlplugindump
). Es bietet auch Diagnoseunterstützung für die Ausgabe von Fensterinhalten in Bilddateien, die durch Umgebungsvariablen bestimmt werden.
© 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.