Spec-Zone.ru › Qt 5.14

Заметки по платформе 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 версии 15.8 или более поздней
  • Active Template Library (ATL), обычно включенная в установку Visual Studio
  • Windows 10 SDK версии 10.0.18362 или более поздней

Qt WebEngine можно скомпилировать только в 64-разрядной версии Windows с x64-битной средой разработки. Для создания Qt WebEngine для 32-разрядных приложений вам необходимо настроить и скомпилировать Qt с помощью Visual Studio 2017 x64 в x86 кросс-компилятором. Настроить эту цепочку инструментов можно в командной строке, выполнив vcvarsall.bat amd64_x86.

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.12 или более поздняя версия
  • Xcode 8.3.3 или более поздняя версия
  • macOS 10.12 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 конфликтует с собственной инициализацией sandboxing в Chromium, что приводит к неправильной инициализации Chromium. Это также связано с использованием закрытых API. Более того, автономный Chromium сам по себе не тестируется официально с включенным App Sandbox, и даже если будут предприняты усилия для обхода ограничений App Store, это не гарантирует правильную работу библиотеки.

Поддержка AirPlay на macOS на MacBook с двумя графическими процессорами

Для правильной работы Qt WebEngine при потоковой передаче на AppleTV с MacBook, поддерживающим переключение графических процессоров, необходимо добавить параметр NSSupportsAutomaticGraphicsSwitching в файл Info.plist приложения со значением YES. В противном случае могут возникнуть проблемы с отрисовкой при создании новых экземпляров веб-виджетов после включения или выключения AirPlay.

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

Если необходимо установить новый профиль OpenGL для QSurfaceFormat по умолчанию, это следует сделать до объявления экземпляра приложения, чтобы убедиться, что все созданные контексты OpenGL используют один и тот же профиль OpenGL.

На macOS, если QSurfaceFormat по умолчанию устанавливается после экземпляра приложения, приложение завершит работу с функцией qFatal() и выведет сообщение, что QSurfaceFormat по умолчанию следует устанавливать до объявления экземпляра приложения.

Поддержка sandboxing

Qt WebEngine предоставляет встроенную поддержку sandboxing для процессов отрисовки Chromium.

В Linux обратите внимание на следующие ограничения:

  • Ядро должно поддерживать функцию анонимных пространств (версия ядра 3.8 или более поздняя). Однако в Debian, Ubuntu и других дистрибутивах, основанных на Debian, эта функция отключена по умолчанию. Ее можно включить, установив /proc/sys/kernel/unprivileged_userns_clone в 1.
  • Ядро должно поддерживать функцию seccomp-bpf (версия ядра 3.5 или более поздняя).
  • Sandboxes с setuid не поддерживаются и, следовательно, отключены.

Для явного отключения sandboxing используйте один из следующих вариантов:

  • Установите переменную среды QTWEBENGINE_DISABLE_SANDBOX в значение 1.
  • Передайте параметр командной строки --no-sandbox исполняемому файлу приложения пользователя.
  • Установите QTWEBENGINE_CHROMIUM_FLAGS в --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/qt-5.14/qtwebengine-platform-notes.html

Spec-Zone.ru

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