Заголовки платформы 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.6/qtplatformheaders-index.html