Abstracción de la Plataforma Qt
La Abstracción de Plataforma Qt (QPA) es la principal capa de abstracción de plataforma en Qt.
La API puede identificarse mediante el prefijo de clase QPlatform*, y se utiliza para implementar clases de nivel superior que suelen encontrarse en Qt GUIpor ejemplo, QPlatformWindow para la integración de sistemas de ventanas, expuesta a través de QWindow, o QPlatformTheme para una tematización e integración más profunda de la plataforma, expuesta a través de QStyleHint y QStyle.
No existen garantías de compatibilidad binaria o de código fuente para las clases QPA, lo que significa que sólo se garantiza que la API funcione con la versión de Qt con la que se desarrolló. No obstante, los cambios en la API sólo se realizarán en versiones menores. (5.1, 5.2, etc.)
Visión general de la API
- Integración del sistema de ventanas
- QPlatformIntegration
- QPlatformAccessibility
- QPlatformBackingStore
- QPlatformClipboard
- QPlatformCursor
- QPlatformDrag
- QPlatformFontDatabase
- QPlatformGraphicsBuffer
- QPlatformInputContext
- QPlatformOffscreenSurface
- QPlatformOpenGLContext
- QPlatformScreen
- QPlatformServices
- QPlatformSharedGraphicsCache
- QPlatformSurface
- QPlatformWindow
- Estilo/temática
- QPlatformTheme
- paletas de plataforma
- fuentes de plataforma
- sugerencias temáticas
- Diálogos y menús nativos
- QPlatformDialogHelper
- QPlatformMenu
- QPlatformMenuBar
- QPlatformMenuItem
Nota: Además de las APIs QPA, hay muchas otras abstracciones de plataforma en Qt, por ejemplo las abstracciones del despachador de eventos en Qt Core y las abstracciones de hardware de renderizado en RHI. Las APIs QPA se centran principalmente en la integración del sistema de ventanas y soporte relacionado.
Plugins QPA
Las implementaciones concretas de las interfaces enumeradas anteriormente se encuentran en los plugins QPA, o plugins de plataforma, que añaden soporte para las distintas plataformas en las que se ejecuta Qt. Los plugins QPA se implementan subclasificando las clases QPlatform*.
La siguiente tabla resume los plugins de plataforma disponibles:
| Nombre del Plugin | Nombre de la clase del plugin | Descripción |
|---|---|---|
qandroid | QAndroidPlatformIntegration | Compatibilidad con Android |
qbsdfb | QBsdFbIntegration | Soporte BsdFb |
qcocoa | QCocoaIntegrationPlugin | Compatible con macOS |
qdirect2d | QWindowsDirect2DIntegrationPlugin | Similar al plugin qwindows, pero sustituye el motor de pintura rasterizado por un motor de pintura basado en Direct2D para QPixmap y QBackingStore. |
qdirectfb | QDirectFbIntegrationPlugin | DirectFB se centra en las superficies, que son el equivalente de QPaintDevice. |
qeglfs | QEglFSIntegrationPlugin | SoporteEGLFS para dispositivos Linux embebidos. |
qhaiku | QHaikuIntegrationPlugin | Compatibilidad con Haiku |
qios | QIOSIntegrationPlugin | Soporte iOS |
qlinuxfb | QLinuxFbIntegrationPlugin | SoporteLinuxFB para dispositivos Linux embebidos. |
qvnc | QVncIntegration | Soporte VNC |
qwayland |
| Compatibilidad con Wayland |
qwindows | QWindowsIntegrationPlugin | Soporte Windows |
qxcb | QXcbIntegrationPlugin | Compatible con X Window System (X11) |
Selección de un plugin QPA
Qt seleccionará un plugin QPA por defecto, dependiendo de la plataforma. La variable de entorno QT_QPA_PLATFORM y el argumento de línea de comandos -platform permiten anular este valor predeterminado. Ver QGuiApplication para más detalles.
Puede pasar una lista separada por punto y coma para instalar un plugin. En este caso, el instalador recorrerá los elementos de la lista e instalará el primer complemento disponible.
Ejemplo:
-qpa xcb;wayland
La línea anterior comprueba si el plugin xcb está disponible, si no lo está, busca el plugin wayland.
Escribir un complemento QPA
En este momento no hay documentación tutorial detallada para escribir plugins QPA. Sin embargo, hay dos plugins mínimos incluidos con Qt para pruebas y otros propósitos especiales que puedes usar como ejemplos:
qtbase/src/plugins/platforms/minimal/qtbase/src/plugins/platforms/minimalegl/
El plugin qminimal se utiliza para herramientas que enlazan con Qt GUIpero que no requieren integración con el sistema de ventanas (por ejemplo, qmlplugindump). También tiene soporte de diagnóstico para volcar el contenido de las ventanas a archivos de imagen según lo determinen las variables de entorno.
© 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.