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 NamePlugin KlassennameBeschreibung
qandroidQAndroidPlatformIntegrationAndroid-Unterstützung
qbsdfbQBsdFbIntegrationBsdFb-Unterstützung
qcocoaQCocoaIntegrationPluginmacOS-Unterstützung
qdirect2dQWindowsDirect2DIntegrationPluginÄhnlich wie das qwindows Plugin, ersetzt aber die Raster-Paint-Engine durch eine Direct2D-basierte Paint-Engine für QPixmap und QBackingStore.
qdirectfbQDirectFbIntegrationPluginDirectFB konzentriert sich auf Oberflächen, die das Äquivalent zu QPaintDevice sind.
qeglfsQEglFSIntegrationPluginEGLFS-Unterstützung für eingebettete Linux-Geräte.
qhaikuQHaikuIntegrationHaiku-Unterstützung
qiosQIOSIntegrationPluginiOS-Unterstützung
qlinuxfbQLinuxFbIntegrationPluginLinuxFB-Unterstützung für eingebettete Linux-Geräte.
qvncQVncIntegrationVNC-Unterstützung
qwayland
  • QWaylandIntegrationPlugin
  • QWaylandBrcmEglPlatformIntegrationPlugin
  • QWaylandEglPlatformIntegrationPlugin
  • QWaylandXCompositeEglPlatformIntegrationPlugin
  • QWaylandXCompositeGlxPlatformIntegrationPlugin
Wayland-Unterstützung
qwindowsQWindowsIntegrationPluginWindows-Unterstützung
qxcbQXcbIntegrationPluginUnterstü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.