Abstraction de plate-forme Qt
L'abstraction de la plate-forme Qt (QPA) est la principale couche d'abstraction de la plate-forme dans Qt.
L'API peut être identifiée par le préfixe de classe QPlatform*, et est utilisée pour implémenter des classes de plus haut niveau typiquement trouvées dans Qt GUIpar exemple QPlatformWindow pour l'intégration du système de fenêtres, exposée à travers QWindow, ou QPlatformTheme pour une thématisation et une intégration plus profonde de la plate-forme, exposée à travers QStyleHint et QStyle.
Il n'existe aucune garantie de compatibilité source ou binaire pour les classes QPA, ce qui signifie que l'API n'est garantie de fonctionner qu'avec la version de Qt pour laquelle elle a été développée. Les modifications de l'API ne seront toutefois apportées que dans les versions mineures. (5.1, 5.2, etc.).
Vue d'ensemble de l'API
- Intégration du système de fenêtres
- QPlatformIntegration
- QPlatformAccessibility
- QPlatformBackingStore
- QPlatformClipboard
- QPlatformCursor
- QPlatformDrag
- QPlatformFontDatabase
- QPlatformGraphicsBuffer (mémoire tampon graphique)
- QPlatformInputContext
- QPlatformOffscreenSurface
- QPlatformOpenGLContext
- QPlatformScreen
- QPlatformServices
- QPlatformSharedGraphicsCache
- QPlatformSurface
- QPlatformWindow
- Style/thème
- QPlatformTheme
- palettes de la plate-forme
- polices de la plate-forme
- conseils sur le thème
- Dialogues et menus natifs
- QPlatformDialogHelper
- QPlatformMenu
- QPlatformMenuBar
- QPlatformMenuItem
Note : En plus des API QPA, il existe de nombreuses autres abstractions de plateforme dans Qt, par exemple les abstractions de distribution d'événements dans Qt Core et les abstractions de matériel de rendu dans RHI. Les API QPA sont principalement axées sur l'intégration du système de fenêtres et le support correspondant.
Plugins QPA
Les implémentations concrètes des interfaces énumérées ci-dessus se trouvent dans les plugins QPA, ou plugins de plate-forme, qui ajoutent un support pour les différentes plates-formes sur lesquelles Qt fonctionne. Les plugins QPA sont implémentés en sous-classant les classes QPlatform*.
Le tableau suivant résume les plugins de plateforme disponibles :
| Nom du plugin | Nom de la classe de plugin | Description des plugins |
|---|---|---|
qandroid | QAndroidPlatformIntegration | Prise en charge d'Android |
qbsdfb | QBsdFbIntegration | Support BsdFb |
qcocoa | QCocoaIntegrationPlugin | support macOS |
qdirect2d | QWindowsDirect2DIntegrationPlugin | Similaire au plugin qwindows, mais remplace le moteur de peinture raster par un moteur de peinture basé sur Direct2D pour QPixmap et QBackingStore. |
qdirectfb | QDirectFbIntegrationPlugin | DirectFB est centré sur les surfaces, qui sont l'équivalent d'un QPaintDevice. |
qeglfs | QEglFSIntegrationPlugin | SupportEGLFS pour les appareils Linux embarqués. |
qhaiku | QHaikuIntegration | Support Haiku |
qios | QIOSIntegrationPlugin | Support iOS |
qlinuxfb | QLinuxFbIntegrationPlugin | Prise en charge deLinuxFB pour les appareils Linux embarqués. |
qvnc | QVncIntegration | Prise en charge de VNC |
qwayland |
| Support Wayland |
qwindows | QWindowsIntegrationPlugin | Support de Windows |
qxcb | QXcbIntegrationPlugin | Support du système X Window (X11) |
Sélection d'un plugin QPA
Qt sélectionnera un plugin QPA par défaut, en fonction de la plateforme. La variable d'environnement QT_QPA_PLATFORM et l'argument de ligne de commande -platform vous permettent de remplacer cette valeur par défaut. Voir QGuiApplication pour plus de détails.
Vous pouvez passer une liste séparée par des points-virgules pour installer un plugin. Dans ce cas, le programme d'installation parcourt les éléments de la liste et installe le premier plugin disponible.
Exemple :
-qpa xcb;wayland
La ligne ci-dessus vérifie si le plugin xcb est disponible, si ce n'est pas le cas, elle vérifie le plugin wayland.
Écrire un plugin QPA
Il n'existe pas pour l'instant de tutoriel détaillé sur l'écriture de plugins QPA. Cependant, il existe deux plugins minimaux livrés avec Qt Test pour les tests et d'autres objectifs spéciaux que vous pouvez utiliser comme exemples :
qtbase/src/plugins/platforms/minimal/qtbase/src/plugins/platforms/minimalegl/
Le plugin qminimal est utilisé pour les outils qui se lient à Qt GUImais qui ne nécessitent pas d'intégration au système de fenêtres (par exemple, qmlplugindump). Il dispose également d'un support de diagnostic pour le dumping du contenu des fenêtres vers des fichiers images déterminés par des variables d'environnement.
© 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.