Spec-Zone.ru › Qt 5.15

Заголовки платформы 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

  • Классы C++

См. также QXcbWindowFunctions и QWindowsWindowFunctions.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/qtplatformheaders-index.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API