Spec-Zone.ru › Qt

Изменения в Qt WebEngine

Qt 6 — результат осознанных усилий по повышению эффективности и удобства использования фреймворка.

Мы стараемся поддерживать бинарную и исходную совместимость всех публичных API в каждом релизе. Но некоторые изменения были неизбежны для того, чтобы сделать Qt лучшим фреймворком.

В этой теме мы подводим итоги этих изменений в Qt WebEngine и предоставляем рекомендации по их обработке.

Перемещенные классы

Модуль Qt WebEngine

Был переименован в модуль Qt WebEngineQuick, чтобы не возникало конфликтов с именем супермодуля и для соблюдения согласованности с другими модулями Quick.

Если вы портируете свое приложение Qt Quick, пожалуйста, помните о необходимости использования нового имени модуля в вашем файле проекта qmake.

QT += webenginequick

Классы, перемещенные из Qt WebEngineWidgets в Qt WebEngineCore

Несколько классов были перемещены из Qt WebEngineWidgets в Qt WebEngineCore, если они не использовали модуль Widgets. В большинстве случаев это изменение должно быть совместимым с исходным кодом, за исключением случаев, когда вы включали имя модуля в заголовке include, в этом случае вам нужно обновить свои include.

Классы, перемещенные с минимальными изменениями

  • QWebEngineHistory
  • QWebEngineProfile
  • QWebEngineScript
  • QWebEngineScriptCollection
  • QWebEngineClientCertificateSelection
  • QWebEngineSettings
  • QWebEngineFullScreenRequest

QWebEngineCertificateError

Был унифицирован между версиями QML и C++, поэтому теперь оба принимают или отклоняют ошибки через методы класса.

QWebEngineContextMenuData

Был перемещен в Core и переименован в QWebEngineContextMenuRequest.

QWebEngineDownloadItem

Был перемещен в Core и переименован в QWebEngineDownloadRequest.

QWebEnginePage

Был перемещен в Core, и API, который работал с QWebEngineView или QPrinter, был перемещен и теперь может быть доступен только из QWebEngineView. См. Измененный API.

Классы, перемещенные из Qt WebEngineQuick в Qt WebEngineCore

WebEngineNavigationRequest

Теперь является QWebEngineNavigationRequest и доступен в API C++, добавив более информативную разновидность QWebEnginePage::acceptNavigationRequest().

WebEngineNewViewRequest

Теперь является WebEngineNewWindowRequest и QWebEngineNewWindowRequest, и доступен в API C++ также, добавив более информативную разновидность QWebEnginePage::createWindow().

Измененный API

C++

QWebEnginePage::certificateError()

Теперь является сигналом вместо производного метода. Ошибки принимаются или отклоняются методами класса QWebEngineCertificateError.

QWebEnginePage::print()

Был перемещен в QWebEngineView::print() и больше не принимает аргумент обратного вызова, но сигнализирует о завершении с помощью QWebEngineView::printFinished() вместо этого. Одновременно не могло быть двух активных задач печати.

QWebEnginePage::view()

Удалён, так как QWebEnginePage и QWebEngineView теперь находятся в разных модулях. Вид, связанный со страницей, можно получить с помощью статического вспомогательного метода QWebEngineView::forPage().

QWebEngineProfile::defaultProfile()

Удалён. Теперь профиль по умолчанию — профиль off the record, и используется только в случае, если QWebEnginePage создаётся без явного профиля. Чтобы сохранить поведение Qt 5, создайте глобальный профиль с именем "Default" и используйте его при создании каждого QWebEnginePage.

QML

WebEngineNavigationRequest

Запросы навигации теперь принимаются или отклоняются, как и другие объекты запросов, с помощью методов accept() или reject().

WebEngineNewViewRequest

Был переименован в WebEngineNewWindowRequest.

Изменённое поведение

Профиль по умолчанию

Профиль по умолчанию теперь off the record. Для получения стандартного профиля браузера с кэшем на диске и куки, рекомендуется создавать свой профиль и использовать его явно.

Схема QRC

Больше не может быть доступна из пользовательских схем по умолчанию, и не может напрямую получать доступ к локальному содержимому. Если нужно поведение Qt 5, можно восстановить его, зарегистрировав схему qrc как пользовательскую схему URL и установив флаги доступа CorsEnabled и LocalAccessAllowed.

QWebEngineUrlScheme qrcScheme(QByteArrayLiteral("qrc"));
qrcScheme.setFlags(QWebEngineUrlScheme::SecureScheme
                   | QWebEngineUrlScheme::LocalAccessAllowed
                   | QWebEngineUrlScheme::CorsEnabled
                   | QWebEngineUrlScheme::ViewSourceAllowed);
QWebEngineUrlScheme::registerScheme(qrcScheme);

Проверка отзыва сертификатов OCSP

В Qt 5 OCSP можно было включить в Linux, используя QWebEngineProfile::setUseForGlobalCertificateVerification(true) для QWebEngineProfile. Это было удалено в Qt6, так как этот конкретный вид OCSP считается плохим. Начиная с Qt 6.2, новый метод проверки отзыва сертификатов в Linux пока не добавлен.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qtwebengine-changes-qt6.html

Spec-Zone.ru

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