En esta página

Interfaces nativas

Las interfaces nativas proporcionan acceso a las API nativas o específicas de la plataforma de las clases a las que extienden.

Las interfaces se encuentran en el espacio de nombres QNativeInterface, y cubren casos de uso como el acceso a los manejadores nativos subyacentes, la adopción de manejadores nativos existentes o la provisión de API específicas de la plataforma.

Ejemplo de uso

Acceso a los gestores nativos subyacentes

En situaciones donde una característica de la plataforma nativa no está expuesta en Qt, puede ser útil acceder a los manejadores nativos mantenidos por Qt, y usarlos para llamar a las APIs nativas en su lugar.

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];

Se accede a la interfaz nativa a través del accesor QOpenGLContext::nativeInterface(), que se asegura de que la interfaz solicitada está disponible, y en caso contrario devuelve nullptr. A continuación, se accede al NSOpenGLContext subyacente a través del accesor nativeContext().

Adopción de manejadores nativos existentes

De forma similar al caso de uso de la incrustación de ventanas, hay situaciones en las que la plataforma nativa, u otro conjunto de herramientas, ha creado un manejador nativo que te gustaría pasar a Qt - envolviendo el manejador existente en lugar de crear uno nuevo.

Por ejemplo, adoptar un NSOpenGLContext existente, y usarlo para compartir recursos con un contexto creado por Qt:

using namespace QNativeInterface;
QOpenGLContext *adoptedContext = QCocoaGLContext::fromNativeContext(nsOpenGLContext);
anotherContext->setShareContext(adoptedContext);

El contexto adoptado se crea mediante una función de fábrica específica de la plataforma en la interfaz nativa QNativeInterface::QCocoaGLContext.

Acceso a API específicas de la plataforma

En algunos casos, una API es demasiado específica de la plataforma para ser incluida en las clases Qt multiplataforma, pero sigue siendo útil incluirla. Estas API están disponibles de la misma manera que cuando se accede a los manejadores nativos subyacentes, a través del accesorio nativeInterface(), o directamente como función estática en la interfaz nativa.

Por ejemplo, para extraer el manejador del módulo OpenGL en Windows:

using namespace QNativeInterface;
HMODULE moduleHandle = QWGLContext::openGLModuleHandle();

Compatibilidad binaria y de código fuente

No existen garantías de compatibilidad binaria o de código fuente para las APIs de las 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.

Interfaces disponibles

Para obtener una lista de todas las interfaces disponibles, consulte el espacio de nombres QNativeInterface.

QOpenGLContext

Se accede a través de QOpenGLContext::nativeInterface().

QNativeInterface::QCocoaGLContext

Interfaz nativa para un contexto NSOpenGLContext en macOS

QNativeInterface::QEGLContext

Interfaz nativa para un contexto EGL

QNativeInterface::QGLXContext

Interfaz nativa para un contexto GLX

QNativeInterface::QWGLContext

Interfaz nativa para un contexto WGL en Windows

QOffscreenSurface

Se accede a través de QOffscreenSurface::nativeInterface().

QNativeInterface::QAndroidOffscreenSurface

Interfaz nativa para una superficie fuera de pantalla en Android

QSGTexture

Se accede a través de QSGTexture::nativeInterface().

QNativeInterface::QSGD3D11Texture

Proporciona acceso y permite adoptar objetos de textura Direct3D 11

QNativeInterface::QSGD3D12Texture

Proporciona acceso a objetos de textura Direct3D 12 y permite adoptarlos.

QNativeInterface::QSGMetalTexture

Proporciona acceso y permite adoptar objetos de textura Metal

QNativeInterface::QSGOpenGLTexture

Proporciona acceso y permite adoptar objetos de textura OpenGL

QNativeInterface::QSGVulkanTexture

Proporciona acceso y permite adoptar objetos de imagen Vulkan.

© 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.