Spec-Zone.ru › Qt 5.11

Заметки по платформе Qt WebEngine

Компиляция Qt WebEngine из исходного кода

Статические сборки не поддерживаются.

Требования к компиляции модулей Qt 5 из исходного кода перечислены отдельно для каждой поддерживаемой платформы:

  • Требования для Qt для Windows
  • Требования для Qt для X11
  • Требования для Qt для macOS

Кроме того, для сборки модуля Qt WebEngine требуются следующие инструменты:

  • Все платформы
  • Windows
  • Linux
  • macOS

Тесты для пропуска сборки Qt WebEngine расположены в репозитории qtwebengine в подкаталоге tools\qmake\mkspecs. Их можно найти, выполнив поиск по skipBuild.

Все платформы

На всех платформах требуются следующие инструменты:

  • Python 2.7.5 или более поздняя версия. Python 3 не поддерживается.
  • Bison, Flex
  • GPerf

Windows

На Windows требуются Visual Studio 2017 и Windows 10 SDK.

Linux

На Linux требуется Clang или GCC версии 5 или выше. Поддерживаемые конфигурации linux-g++ и linux-clang.

Qt WebEngine требует pkg-config для обнаружения большинства своих зависимостей. Требуются следующие файлы pkg-config:

  • dbus-1
  • fontconfig

Если Qt был сконфигурирован для xcb, также потребуются следующие файлы pkg-config:

  • libdrm
  • xcomposite
  • xcursor
  • xi
  • xrandr
  • xscrnsaver
  • xtst

Кроме того, необходимо установить пакеты разработки для khr и libcap.

macOS

На macOS требуются следующие компоненты:

  • macOS 10.9 или более поздняя версия
  • Xcode 5.1 или более поздняя версия
  • macOS 10.10 SDK или более поздняя версия

Примечание: Qt WebEngine не может быть скомпилирован для 32-битного режима macOS (используя macx-clang-32 mkspec).

Использование более ранних версий Qt для компиляции Qt WebEngine

Поддерживается компиляция Qt WebEngine с более ранними версиями Qt (вплоть до последней LTS версии). Это означает, что Qt WebEngine 5.11 можно скомпилировать с Qt 5.9.x, Qt 5.10.x и Qt 5.11.

Для использования более ранней версии Qt для компиляции Qt Webengine:

  1. Загрузите исходные коды qtwebengine.
  2. Из более ранней версии Qt выполните qmake && make (&& make install).

Совместимость с 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, поддерживающего переключение графических процессоров, необходимо добавить опцию NSSupportsAutomaticGraphicsSwitching в файл Info.plist приложения со значением YES. В противном случае могут возникнуть проблемы с рендерингом при создании новых представлений веб-движка после включения или выключения AirPlay.

Поддержка профиля OpenGL по умолчанию для QSurfaceFormat

Если необходимо установить новый профиль OpenGL для QSurfaceFormat, его следует установить перед объявлением экземпляра приложения, чтобы убедиться, что все созданные контексты 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 почти всегда сообщает о необходимости активации доступности. На больших веб-страницах это может привести к значительному замедлению скорости рендеринга.

Поэтому, начиная с Qt 5.9, поддержка доступности Qt WebEngine по умолчанию отключена на Linux. Ее можно включить, установив переменную среды QTWEBENGINE_ENABLE_LINUX_ACCESSIBILITY в ненулевое значение.

Попапы в приложениях в полноэкранном режиме на Windows

Из-за ограничения в композиторе Windows приложения, отображающие полноэкранное представление веб-движка, не будут правильно отображать всплывающие окна или другие окна верхнего уровня. Причина и обходное решение проблемы можно найти в Полный экран OpenGL Базовые окна и QWindowsWindowFunctions::setHasBorderInFullScreen.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/qtwebengine-platform-notes.html

Spec-Zone.ru

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