Qt WebEngine 的更改

Qt 6 是为了使框架更加高效、易于使用而做出的自觉努力的结果。

我们试图保持每个版本中所有公共 API 的二进制和源兼容性。但是,为了使 Qt 成为更好的框架,一些更改是不可避免的。

在本主题中,我们总结了 Qt WebEngine 中的这些更改,并提供了一些处理这些更改的指南。

移动的类

Qt WebEngine 模块

已重命名为 Qt WebEngineQuick 模块,以避免与超级模块的名称冲突,并与其他 Quick 模块保持一致。

如果您移植您的 Qt Quick 应用程序,请记住在您的 qmake 项目文件中使用新的模块名称。

QT += webenginequick

从 Qt WebEngineWidgets 移动的类

如果某些类没有使用 Widgets 模块,则将它们从 Qt WebEngineWidgets 移动到 Qt WebEngineCore。在大多数情况下,除非您在包含头文件中包含了模块名称,否则此更改应该是源兼容的,在这种情况下您需要更新您的包含。

有最小更改的移动的类

QWebEngineCertificateError

在 QML 和 C++ 版本之间统一,现在两种都通过类上的方法被接受或拒绝。

QWebEngineContextMenuData

已移动到 Core 并重命名为 QWebEngineContextMenuRequest

QWebEngineDownloadItem

已移动到 Core 并重命名为 QWebEngineDownloadRequest

QWebEnginePage

已移动到 Core,并且工作在 QWebEngineViewQPrinter 上的 API 已移动,现在只能从 QWebEngineView 访问。请参阅“更改的 API。”

从 Qt WebEngineQuick 移动的类

WebEngineNavigationRequest

现在为QWebEngineNavigationRequest,也可以从C++ API访问,新增了更详尽的QWebEnginePage::acceptNavigationRequest变体。

WebEngineNewViewRequest

现在为WebEngineNewWindowRequestQWebEngineNewWindowRequest,也可以从C++ API访问,新增了更详尽的QWebEnginePage::createWindow变体。

API更改

C++

QWebEnginePage::certificateError()

现在是一个信号而不是一个派生方法。错误可以通过QWebEngineCertificateError类的相关方法进行接受或拒绝。

QWebEnginePage::print()

已移动到QWebEngineView::print(),不再接受回调参数,而是使用信号QWebEngineView::printFinished来表示完成。同时激活两个打印作业一直是不可行的。

QWebEnginePage::view()

已删除,因为QWebEnginePageQWebEngineView现在位于不同的模块中。可以通过静态辅助函数QWebEngineView::forPage()访问与页面关联的视图。

QWebEngineProfile::defaultProfile()

已删除。默认配置现在是一个脱机配置,只有在没有显式配置创建QWebEnginePage时才会使用。为了保持Qt 5的行为,创建一个名为“默认”的全局配置,并在创建每个QWebEnginePage时使用它。

QML

WebEngineNavigationRequest

导航请求现在与其他请求对象一样使用accept()或reject()方法进行接受或拒绝。

WebEngineNewViewRequest

已重命名为WebEngineNewWindowRequest

行为变更

默认配置

默认配置现在是脱机的。为了获得带有磁盘缓存和Cookie的标准浏览器配置文件,我们建议创建自己的配置文件并明确使用它。

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使用QWebEngineProfile::setUseForGlobalCertificateVerification(true)来启用。在Qt 6中已被移除,因为这种特定的OCSP被认为是不好的。截至Qt 6.2,Linux上尚未添加新的证书撤回检查方法。

© 2024 The Qt Company Ltd. 本文件中包含的文档贡献者的版权。提供的文档根据GNU自由文档许可证1.3版的条款获得许可,由自由软件基金会发布。Qt及其相关标记是芬兰的The Qt Company Ltd.和/或其他国家的商标。所有其他商标均为其各自所有者的财产。