Qt WebEngine

Qt 6 是努力使框架更高效、更易用的结果。

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

在本主题中,我们总结了 QtWebEngine 中的这些变化,并提供了处理这些变化的指导。

移动的类

Qt WebEngine 模块

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

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

QT += webenginequick

从 Qt WebEngineWidgets 移至 Qt WebEngineCore 的类

如果 Qt WebEngineWidgets 没有使用 Widgets 模块,一些类已从 Qt WebEngineWidgets 移至 Qt WebEngineCore。在大多数情况下,这种改变与源代码兼容,除非你在包含头中包含了模块名称,在这种情况下,你需要更新你的包含。

只需极少改动即可移动的类

QWebEngineCertificateError

已在 QML 和 C++ 版本之间进行了统一,因此现在都是通过类上的方法来接受或拒绝。

QWebEngineContextMenuData

已移至 Core 并更名为QWebEngineContextMenuRequest

QWebEngineDownloadItem

已移至 Core,并更名为QWebEngineDownloadRequest

网页

已移至 Core,在QWebEngineViewQPrinter 上运行的 API 已被移除,现在只能从QWebEngineView 访问。 请参见已更改的 API。

从 Qt WebEngineQuick 移至 Qt WebEngineCore 的类

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 的行为,请创建名为 "Default "的全局配置文件,并在创建每个QWebEnginePage 时使用它。

QML

导航请求(WebEngineNavigationRequest

导航请求现在可以像使用 accept() 或 reject() 方法的其他请求对象一样被接受或拒绝。

WebEngineNewViewRequest

已更名为WebEngineNewWindowRequest

已更改的行为

默认配置文件

默认配置文件现已取消记录。若要使用带磁盘缓存和 Cookie 的标准浏览器配置文件,我们建议您创建自己的配置文件并明确使用该配置文件。

QRC 方案

默认情况下不再能从自定义方案访问,也不能直接访问本地内容。如果需要 Qt 5 行为,可通过像注册自定义 URL 方案一样注册 qrc 方案,并设置 CorsEnabled 和 LocalAccessAllowed 访问标志来恢复。

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

OCSP 证书吊销检查

在 Qt 5 中,可使用 QWebEngineProfile::setUseForGlobalCertificateVerification(true) 在QWebEngineProfile 上启用 OCSP。由于这种特定形式的 OCSP 被认为是不好的,因此在 Qt6 中已被删除。截至 Qt 6.2,尚未添加用于在 Linux 上检查已撤销证书的新方法。

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.