Abstraction de la plateforme Qt
L'abstraction de plateforme Qt (QPA) est la principale couche d'abstraction de plateforme dans Qt.
L'API est identifiable grâce au préfixe de classe « QPlatform* » et sert à implémenter des classes de niveau supérieur que l'on retrouve généralement dans Qt GUI, par exemple QPlatformWindow pour l’intégration au système de fenêtres, accessible via QWindow, ou QPlatformTheme pour une personnalisation et une intégration plus poussées de la plateforme, accessibles via QStyleHint et QStyle.
Il n’y a aucune garantie de compatibilité, ni au niveau du code source ni au niveau binaire, pour les classes QPA, ce qui signifie que le fonctionnement de l’API n’est garanti qu’avec la version de Qt sur 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.).
Présentation de l’API
- Intégration au système de fenêtrage
- QPlatformIntegration
- QPlatformAccessibility
- QPlatformBackingStore
- QPlatformClipboard
- QPlatformCursor
- QPlatformGlisser-déposer
- QPlatformBaseDeDonnéesDesPolices
- QPlatformGraphicsBuffer
- QPlatformInputContext
- QPlatformOffscreenSurface
- QPlatformOpenGLContext
- QPlatformScreen
- QPlatformServices
- QPlatformSharedGraphicsCache
- QPlatformSurface
- QPlatformWindow
- Style/thèmes
- QPlatformTheme
- palettes de la plateforme
- polices de la plateforme
- Conseils sur les thèmes
- Boîtes de dialogue et menus natifs
- QPlatformDialogHelper
- QPlatformMenu
- QPlatformMenuBar
- QPlatformMenuItem
Remarque : outre les API QPA, Qt propose de nombreuses autres abstractions de plate-forme, par exemple les abstractions du répartiteur d'événements dans Qt Core et les abstractions du matériel de rendu dans RHI. Les API QPA sont principalement axées sur l’intégration au système de fenêtrage et la prise en charge associée.
Plug-ins QPA
Les implémentations concrètes des interfaces énumérées ci-dessus se trouvent dans les plugins QPA, ou plugins de plateforme, qui ajoutent la prise en charge des différentes plateformes sur lesquelles Qt s'exécute. Les plugins QPA sont implémentés en sous-classant les classes ` QPlatform* `.
Le tableau suivant récapitule les plugins de plateforme disponibles :
| Nom du plugin | Nom de la classe du plugin | Description |
|---|---|---|
qandroid | QAndroidPlatformIntegration | Prise en charge d'Android |
qbsdfb | QBsdFbIntegration | Prise en charge de BsdFb |
qcocoa | QCocoaIntegrationPlugin | Prise en charge de macOS |
qdirect2d | QWindowsDirect2DIntegrationPlugin | Similaire au plugin « qwindows », mais remplace le moteur de rendu raster par un moteur de rendu basé sur Direct2D pour QPixmap et QBackingStore. |
qdirectfb | QDirectFbIntegrationPlugin | DirectFB s'articule autour des surfaces, qui sont l'équivalent d'un QPaintDevice. |
qeglfs | QEglFSIntegrationPlugin | Prise en charged'EGLFS pour les appareils Linux embarqués. |
qhaiku | QHaikuIntegration | Prise en charge de Haiku |
qios | QIOSIntegrationPlugin | Prise en charge d'iOS |
qlinuxfb | QLinuxFbIntegrationPlugin | Prise en charge deLinuxFB pour les appareils Linux embarqués. |
qvnc | QVncIntegration | Prise en charge de VNC |
qwayland |
| Prise en charge de Wayland |
qwindows | QWindowsIntegrationPlugin | Prise en charge de Windows |
qxcb | QXcbIntegrationPlugin | Prise en charge 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 plate-forme. La variable d'environnement QT_QPA_PLATFORM et l'argument de ligne de commande -platform vous permettent de remplacer cette valeur par défaut. Consultez 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 parcourra les éléments de la liste et installera le premier plugin disponible.
Exemple :
-qpa xcb;waylandLa ligne ci-dessus vérifie si le plugin « xcb » est disponible ; s'il ne l'est pas, elle vérifie ensuite la présence du plugin « wayland ».
Écrire un plugin QPA
Il n'existe pour l'instant aucune documentation détaillée sous forme de tutoriel pour l'écriture de plugins QPA. Cependant, deux plugins minimaux sont fournis avec Qt à des fins de test et pour d'autres usages spécifiques ; vous pouvez vous en servir comme exemples :
qtbase/src/plugins/platforms/minimal/qtbase/src/plugins/platforms/minimalegl/
Le plugin qminimal est utilisé pour les outils qui s’enchaînent à Qt GUI, mais ne nécessitent pas d’intégration au système de fenêtrage (par exemple, qmlplugindump). Il offre également des fonctionnalités de diagnostic permettant de sauvegarder le contenu des fenêtres dans des fichiers image, selon les paramètres définis par les 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.