Заметки к платформе Qt WebEngine
Сборка Qt WebEngine из исходного кода
Статические сборки не поддерживаются.
Требования к сборке модулей Qt 5 из исходного кода перечислены отдельно для каждой поддерживаемой платформы:
Кроме того, для сборки модуля Qt WebEngine необходимы следующие инструменты:
Тесты для пропуска сборки Qt WebEngine расположены в репозитории qtwebengine в подкаталоге tools\qmake\mkspecs. Их можно найти, выполнив поиск по запросу skipBuild.
Все платформы
На всех платформах требуются следующие инструменты:
- Python 2.7.5 или более поздняя версия. Python 3 не поддерживается.
- Bison, Flex
- GPerf
Windows
На Windows необходимы Visual Studio 2015 или 2017 и Windows 10 SDK.
Linux
На Linux требуется Clang или GCC версии 4.7 или более поздней. Поддерживаемые конфигурации — linux-g++ и linux-clang.
Qt WebEngine требует pkg-config для определения большинства его зависимостей. Необходимы следующие файлы pkg-config:
dbus-1fontconfig
Если Qt был сконфигурирован для xcb, также необходимы следующие файлы pkg-config:
libdrmxcompositexcursorxixrandrxscrnsaverxtst
Кроме того, необходимо установить пакеты разработки для khr и libcap.
macOS
На macOS необходимо следующее:
- macOS 10.9 или более поздняя версия
- Xcode 5.1 или более поздняя версия
- macOS 10.10 SDK или более поздняя версия
Примечание: Qt WebEngine не может быть собран для 32-битной версии macOS (используя macx-clang-32 mkspec).
Совместимость с Mac App Store
Приложения, использующие Qt WebEngine, несовместимы с Mac App Store, потому что:
- Часть кода Chromium использует несколько методов частного API, запрещенных App Store.
- Приложения, отправляемые в App Store, должны быть подписаны с включенным режимом App Sandbox. App Sandbox вмешивается в собственное начальное задание песочницы Chromium, что приводит к некорректной инициализации Chromium. Это также связано с использованием частного API. Кроме того, сам Chromium в автономном режиме не тестируется с включенным App Sandbox, и даже если будут предприняты усилия для обхода ограничений App Store, это не гарантирует правильную работу библиотеки.
Поддержка AirPlay на MacBook с двойными графическими процессорами
Для правильной работы Qt WebEngine при потоковой передаче на AppleTV с MacBook, поддерживающего переключение GPU, важно добавить опцию NSSupportsAutomaticGraphicsSwitching в файл Info.plist приложения со значением YES. В противном случае могут возникнуть проблемы с рендерингом при создании новых экземпляров просмотра веб-движка после включения или выключения AirPlay.
Поддержка профиля OpenGL по умолчанию QSurfaceFormat
Если необходимо установить новый формат QSurfaceFormat по умолчанию с измененным профилем OpenGL, он должен быть установлен до объявления экземпляра приложения, чтобы убедиться, что все созданные контексты OpenGL используют один и тот же профиль OpenGL.
На macOS, если формат QSurfaceFormat по умолчанию устанавливается после экземпляра приложения, приложение завершится с вызовом qFatal() и выведет сообщение о том, что формат QSurfaceFormat по умолчанию должен быть установлен до создания экземпляра приложения.
Поддержка песочницы
Qt WebEngine предоставляет встроенную поддержку песочницы для процессов рендеринга Chromium на Linux и macOS. Поддержка песочницы в настоящее время не поддерживается на Windows из-за ограничений в способе настройки песочницы и ее взаимодействия с процессом хоста, предоставляемым библиотеками Qt WebEngine.
На macOS нет особых требований для включения поддержки песочницы.
На Linux ядро должно поддерживать функцию анонимных пространств имен (версия ядра ≥ 3.8) и функцию seccomp-bpf (версия ядра ≥ 3.5). Поддержка песочницы setuid не поддерживается и, следовательно, отключена.
Для явного отключения песочницы переменная среды QTWEBENGINE_DISABLE_SANDBOX может быть установлена в 1, или аргумент командной строки --no-sandbox может быть передан исполняемому файлу приложения.
Доступность и производительность
Qt WebEngine включает поддержку доступности веб-страниц при соблюдении следующих условий:
- Qt Core сконфигурирован и собран с включенной поддержкой доступности.
- Плагин QPA уведомляется операционной системой о необходимости активации доступности. Это происходит, например, при использовании приложения для чтения с экрана на Windows или VoiceOver на macOS.
Из-за некоторых ограничений плагин QPA на Linux почти всегда сообщает о необходимости активации доступности. На больших HTML-страницах это может значительно замедлить скорость рендеринга.
Поэтому, начиная с Qt 5.9, поддержка доступности Qt WebEngine по умолчанию отключена на Linux. Ее можно включить, установив переменную среды QTWEBENGINE_ENABLE_LINUX_ACCESSIBILITY в ненулевое значение.
Выпадающие меню в приложениях в полноэкранном режиме на Windows
Из-за ограничения в композиторе Windows приложения, отображающие веб-вью Qt в полноэкранном режиме, не смогут корректно отображать всплывающие окна или другие окна верхнего уровня. Причина и решение проблемы описаны в Полностьюэкранные окна на основе OpenGL и QWindowsWindowFunctions::setHasBorderInFullScreen.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qtwebengine-platform-notes.html