Integración de plataformas
La principal ventaja de Qt como conjunto de herramientas multiplataforma para el desarrollo de aplicaciones es que elimina la necesidad de duplicar el código de la aplicación para cada plataforma de destino.
Mientras que Qt resuelve muchas de las tareas típicas de escribir una aplicación, siempre hay casos que Qt no puede cubrir, o donde tiene más sentido construir una característica en la parte superior de las API específicas de la plataforma, u otro conjunto de herramientas.
Para dar soporte a estos casos de uso, permitiendo al mismo tiempo a Qt manejar la mayor parte de la lógica de la aplicación, Qt proporciona una amplia gama de APIs de integración de plataformas, desde simples conversiones de tipos a interfaces nativas específicas de la plataforma.
Conversiones de tipos
Muchos de los tipos de datos básicos de Qt, como QString, QPoint, o QImage, proporcionan conversiones hacia y desde los tipos nativos equivalentes.
Por ejemplo, para obtener el nombre de usuario del usuario actual en plataformas Apple:
NSProcessInfo *processInfo = NSProcessInfo.processInfo; QString userName = QString::fromNSString(processInfo.userName)
Para obtener una lista completa de todas las conversiones de tipos, consulte la descripción general de las conversiones de tipos.
Incrustación de ventanas
Las ventanas creadas por las APIs de la plataforma subyacente pueden ser utilizadas como contenedores padre para ventanas Qt, o incrustadas en ventanas Qt como ventanas hijo.
Lo primero es útil si la aplicación está escrita principalmente utilizando las APIs nativas de la plataforma, pero donde partes de la aplicación utilizan Qt, por ejemplo para dibujar una interfaz de usuario especializada. Para incrustar Qt en la jerarquía de ventanas de la aplicación nativa, utilice QWindow::winId() para obtener el "handle" nativo de la ventana Qt, y luego utilice las APIs nativas para re-parentar la ventana en la UI nativa.
Esto último es útil si la plataforma nativa, u otro conjunto de herramientas, expone un control especializado como una ventana nativa. Usando QWindow::fromWinId() para envolver el manejador de la ventana nativa en QWindow, la ventana puede ser re-parentada en la jerarquía de ventanas de Qt como cualquier otra QWindow. Para reubicar este QWindow en una interfaz de usuario basada en widgets Qt, utilice la función específica para widgets QWidget::createWindowContainer().
Manejo de Eventos
La mayoría de los casos de uso de manejo de eventos en Qt están suficientemente cubiertos por la entrega de eventos entre plataformas, a través de QWindow::event() y amigos, o a través de QObject::installEventFilter().
En los casos en que esto no es suficiente, Qt proporciona acceso a la entrega de los eventos nativos. Un filtro de eventos global que recibe todos los eventos nativos puede ser instalado usando QCoreApplication::installNativeEventFilter(), mientras que los eventos nativos por ventana pueden ser manejados en QWindow::nativeEvent().
Nota: Interferir con el flujo de eventos nativos puede poner a Qt en un estado inconsistente. Estas APIs deberían usarse principalmente para aumentar el manejo de eventos existente en Qt, por ejemplo para eventos que Qt aún no maneja.
Interfaces nativas
La funcionalidad específica de la plataforma no cubierta por las APIs mencionadas anteriormente se gestiona mediante el mecanismo más genérico de interfaces nativas de Qt. Las interfaces proporcionan acceso a las API nativas o específicas de la plataforma de las clases que extienden.
Las interfaces se encuentran en el espacio de nombres QNativeInterface y cubren casos de uso como el acceso a los controladores nativos subyacentes, la adopción de controladores nativos existentes o la provisión de API específicas de la plataforma.
Por ejemplo, para acceder al NSOpenGLContext subyacente de un QOpenGLContext en macOS, a través de la interfaz nativa QNativeInterface::QCocoaGLContext:
using namespace QNativeInterface; if (auto *cocoaGLContext = glContext->nativeInterface<QCocoaGLContext>()) [cocoaGLContext->nativeContext() makeCurrentContext];
Para obtener una lista completa de todas las interfaces nativas, consulta la descripción general de las interfaces nativas.
Advertencia: No existen garantías de compatibilidad binaria o de código fuente para las APIs de interfaces nativas, lo que significa que una aplicación que utilice estas interfaces sólo está garantizada para funcionar con la versión de Qt con la que fue desarrollada.
Soporte de plataformas
Además de las APIs para desarrolladores de aplicaciones, Qt también interactúa con la plataforma al proporcionar las implementaciones subyacentes de los bloques de construcción multiplataforma de Qt.
Algunos ejemplos son las abstracciones de despacho de eventos en Qt Core y las abstracciones del hardware de renderizado en RHI.
La principal capa de abstracción aquí es la Abstracción de Plataforma Qt, o QPA para abreviar, que se ocupa de la integración del sistema de ventanas y casos de uso relacionados.
© 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.