Заголовки платформы Qt
Некоторым приложениям может потребоваться взаимодействие Qt с другими фреймворками. Это часто означает использование графических контекстов или других типов собственных обработок, созданных одним фреймворком с другим. Например, на некоторых платформах QOpenGLContext предоставляет возможность обернуть существующий собственный контекст OpenGL, вместо создания нового. Этот существующий собственный контекст может быть создан каким-либо другим кодом сторонних разработчиков.
Тип таких собственных обработок сильно зависит от платформы, и в некоторых случаях плагин платформы потребует больше информации для адаптации обработки, только сама обработка будет недостаточной. Поэтому общедоступный API состоит из функций, принимающих или возвращающих QVariant, содержащий тип значения, специфичный для платформы. См., например, QOpenGLContext::setNativeHandle() и QOpenGLContext::nativeHandle(). При работе в Linux/X11 с использованием плагина платформы xcb и интерфейса системы окон GLX, переменная содержит QGLXNativeContext. На других платформах будет использоваться другой класс. Все эти классы размещены в модуле Заголовки платформы Qt.
Заголовки платформы могут использоваться совместно с QGuiApplication::platformFunction() для предоставления безопасного по типу интерфейса к функциональности, специфичной для платформы. Возможна ситуация, когда заголовки, определенные в QtPlatformHeaders, определяют определения типов для функций, которые могут возвращаться плагином платформы из QGuiApplication::platformFunction(). Заголовки в QtPlatformHeaders также могут реализовывать функции-обертки для указателя на функцию, предоставляя статическую функцию, которую можно вызвать из любого контекста после создания интеграции платформы. Примером реализации этого шаблона является QXcbWindowFunctions::setWmWindowType(). Эта функция извлекает указатель на функцию из QGuiApplication::platformFunction и выполняет эту функцию, если запрошенная функция была возвращена.
Примечание: Аналогично другим API QPA, для этих классов нет гарантий бинарной совместимости, что означает, что приложение, использующее эти классы, гарантированно будет работать только с версией Qt, с которой оно было разработано. В отличие от QPA, гарантия совместимости исходного кода сохраняется.
Начало работы
Для включения определений функций и классов модуля используйте следующие директивы:
#include <QtPlatformHeaders/QWindowsWindowFunctions> #include <QtPlatformHeaders/QXcbWindowFunctions>
Поскольку модуль является только заголовочным, никакие дальнейшие изменения в файлах .pro не требуются для его использования.
Примечание: Имя модуля (QtPlatformHeaders) должно появляться в директиве #include.
Примечание: Не обязательно заключать код в директивы #ifdef в зависимости от платформы.
Справочник API
См. также QXcbWindowFunctions и QWindowsWindowFunctions.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/qtplatformheaders-index.html