某些應用程序可能需要接口其它框架到 Qt。這常意味著使用由一框架與另一框架創建的圖形上下文或其它類型的本機句柄。例如,在某些平颱, QOpenGLContext 提供包裹現有本機 OpenGL 上下文的能力,而不是創建一個新的。可以通過一些其它第 3 方代碼,創建這種現有本機上下文。
這種本機句柄類型高度特定於平颱,且在某些情況下,平颱插件需要更多信息以采納句柄,僅僅句柄本身是不夠的。因此,公共 API 組成函數接受或返迴 QVariant 包含特定平颱值類型。例如見 QOpenGLContext::setNativeHandle () 和 QOpenGLContext::nativeHandle ()。當在使用 xcb 平颱插件和 GLX 窗口係統界麵的 Linux/X11 上運行時,變體包含 QGLXNativeContext 。在其它平颱,會使用不同的類。這些類被放在 Qt Platform Headers 模塊中。
可以使用平颱頭結閤 QGuiApplication::platformFunction () 為特定平颱功能給齣類型安全接口。定義頭是可能的在 QtPlatformHeaders 以定義 typedef 為函數,可以返迴通過平颱插件從 QGuiApplication::platformFunction ()。頭在 QtPlatformHeaders 還可以為函數指針實現包裹器函數,給齣可以從任何上下文被調用的靜態函數 (在創建平颱集成後)。此模式的實現是 QXcbWindowFunctions::setWmWindowType ()。此函數檢索函數指針從 QGuiApplication::platformFunction ,並執行該函數若請求函數被返迴。
注意: 類似其它 QPA API,這些類沒有二進製兼容性保證,意味著使用這些類的應用程序僅保證能工作於針對它開發的 Qt 版本。不像 QPA,不管怎樣,源兼容性有保證。
要包括模塊函數和類的定義,使用以下僞指令:
#include <QtPlatformHeaders/QWindowsWindowFunctions> #include <QtPlatformHeaders/QXcbWindowFunctions>
由於模塊僅是頭,因此無需進一步修改 .pro 文件就可使用它。
注意:
模塊名稱 (
QtPlatformHeaders
) 必須齣現在
#include
指令。
注意:
沒有必要將代碼封閉在
#ifdef
指令從屬平颱。
另請參閱 QXcbWindowFunctions and QWindowsWindowFunctions .