Изменения в 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