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。在大多数情况下,除非您在包含头文件中包含了模块名称,否则此更改应该是源兼容的,在这种情况下您需要更新您的包含。
有最小更改的移动的类
- QWebEngineHistory
- QWebEngineProfile
- QWebEngineScript
- QWebEngineScriptCollection
- QWebEngineClientCertificateSelection
- QWebEngineSettings
- QWebEngineFullScreenRequest
QWebEngineCertificateError
在 QML 和 C++ 版本之间统一,现在两种都通过类上的方法被接受或拒绝。
QWebEngineContextMenuData
已移动到 Core 并重命名为 QWebEngineContextMenuRequest。
QWebEngineDownloadItem
已移动到 Core 并重命名为 QWebEngineDownloadRequest。
QWebEnginePage
已移动到 Core,并且工作在 QWebEngineView 或 QPrinter 上的 API 已移动,现在只能从 QWebEngineView 访问。请参阅“更改的 API。”
从 Qt WebEngineQuick 移动的类
WebEngineNavigationRequest
现在为QWebEngineNavigationRequest,也可以从C++ API访问,新增了更详尽的QWebEnginePage::acceptNavigationRequest变体。
WebEngineNewViewRequest
现在为WebEngineNewWindowRequest和QWebEngineNewWindowRequest,也可以从C++ API访问,新增了更详尽的QWebEnginePage::createWindow变体。
API更改
C++
QWebEnginePage::certificateError()
现在是一个信号而不是一个派生方法。错误可以通过QWebEngineCertificateError类的相关方法进行接受或拒绝。
QWebEnginePage::print()
已移动到QWebEngineView::print(),不再接受回调参数,而是使用信号QWebEngineView::printFinished来表示完成。同时激活两个打印作业一直是不可行的。
QWebEnginePage::view()
已删除,因为QWebEnginePage和QWebEngineView现在位于不同的模块中。可以通过静态辅助函数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.和/或其他国家的商标。所有其他商标均为其各自所有者的财产。