Auf dieser Seite

Native Schnittstellen

Die nativen Schnittstellen bieten Zugriff auf native oder plattformspezifische APIs der Klassen, die sie erweitern.

Die Schnittstellen befinden sich im Namespace „ QNativeInterface “ und decken Anwendungsfälle wie den Zugriff auf zugrunde liegende native Handles, die Übernahme bestehender nativer Handles oder die Bereitstellung plattformspezifischer APIs ab.

Anwendungsbeispiel

Zugriff auf zugrunde liegende native Handles

In Situationen, in denen eine Funktion der nativen Plattform in Qt nicht verfügbar ist, kann es hilfreich sein, auf die von Qt verwalteten nativen Handles zuzugreifen und diese stattdessen zum Aufruf der nativen APIs zu verwenden.

Um beispielsweise unter macOS über die native Schnittstelle „ QNativeInterface::QCocoaGLContext “ auf den zugrunde liegenden `NSOpenGLContext` eines ` QOpenGLContext ` zuzugreifen:

using namespace QNativeInterface;
if (auto *cocoaGLContext = glContext->nativeInterface<QCocoaGLContext>())
    [cocoaGLContext->nativeContext() makeCurrentContext];

Der Zugriff auf die native Schnittstelle erfolgt über den Accessor ` QOpenGLContext::nativeInterface()`, der sicherstellt, dass die angeforderte Schnittstelle verfügbar ist, und andernfalls ` nullptr` zurückgibt. Auf den zugrunde liegenden `NSOpenGLContext` wird dann über den Accessor ` nativeContext()` zugegriffen.

Übernahme bestehender nativer Handles

In manchen Situationen hat die native Plattform oder ein anderes Toolkit ein natives Handle erstellt, das Sie an Qt weitergeben möchten – indem Sie das vorhandene Handle „einbinden“, anstatt ein neues zu erstellen.

Um beispielsweise einen vorhandenen `NSOpenGLContext` zu übernehmen und diesen zur gemeinsamen Nutzung von Ressourcen mit einem von Qt erstellten Kontext zu verwenden:

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

Der übernommene Kontext wird von einer plattformspezifischen Factory-Funktion in der nativen Schnittstelle ` QNativeInterface::QCocoaGLContext ` erstellt.

Zugriff auf plattformspezifische APIs

In manchen Fällen ist eine API zu plattformspezifisch, um in die plattformübergreifenden Qt-Klassen aufgenommen zu werden, ihre Einbindung ist jedoch dennoch sinnvoll. Diese APIs sind entweder auf dieselbe Weise verfügbar wie beim Zugriff auf die zugrunde liegenden nativen Handles – über den Accessor ` nativeInterface()` – oder direkt als statische Funktion in der nativen Schnittstelle.

Beispiel für das Abrufen des OpenGL-Modul-Handles unter Windows:

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

Quell- und Binärkompatibilität

Für die APIs der nativen Schnittstelle gibt es keine Garantien hinsichtlich der Quell- oder Binärkompatibilität. Das bedeutet, dass eine Anwendung, die diese Schnittstellen nutzt, nur mit der Qt-Version funktioniert, für die sie entwickelt wurde.

Verfügbare Schnittstellen

Eine Liste aller verfügbaren Schnittstellen finden Sie im Namespace „ QNativeInterface “.

QOpenGLContext

Zugriff über ` QOpenGLContext::nativeInterface()`

QNativeInterface::QCocoaGLContext

Native Schnittstelle zu einem NSOpenGLContext unter macOS

QNativeInterface::QEGLContext

Native Schnittstelle zu einem EGL-Kontext

QNativeInterface::QGLXContext

Native Schnittstelle zu einem GLX-Kontext

QNativeInterface::QWGLContext

Native Schnittstelle zu einem WGL-Kontext unter Windows

QOffscreenSurface

Zugriff über ` QOffscreenSurface::nativeInterface()`.

QNativeInterface::QAndroidOffscreenSurface

Native Schnittstelle zu einer Offscreen-Oberfläche unter Android

QSGTexture

Zugriff über ` QSGTexture::nativeInterface()`.

QNativeInterface::QSGD3D11Texture

Bietet Zugriff auf Direct3D 11-Texturobjekte und ermöglicht deren Übernahme

QNativeInterface::QSGD3D12Texture

Bietet Zugriff auf Direct3D 12-Texturobjekte und ermöglicht deren Verwendung

QNativeInterface::QSGMetalTexture

Bietet Zugriff auf Metal-Texturobjekte und ermöglicht deren Verwendung

QNativeInterface::QSGOpenGLTexture

Bietet Zugriff auf OpenGL-Texturobjekte und ermöglicht deren Verwendung

QNativeInterface::QSGVulkanTexture

Bietet Zugriff auf Vulkan-Bildobjekte und ermöglicht deren Verwendung

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