Qt WebEngine功能#
总结Qt WebEngine功能。
Qt WebEngine支持以下功能
音频和视频编解码器#
Qt WebEngine仅支持MPEG-4第14部分(MP4)文件格式,前提是已启用所需的专有音频和视频编解码器,例如H.264和MPEG层-3(MP3)。可以通过在配置Qt时传递以下选项来启用专有编解码器:
-webengine-proprietary-codecs
例如,在配置Qt以在顶级构建时,可以使用以下选项:
configure -webengine-proprietary-codecs
有关更多信息,请参阅Qt配置选项。
当使用cmake构建仅Qt WebEngine模块时,可以使用以下命令进行配置和构建(在此示例中,Qt WebEngine源代码位于C:\qt\qtwebengine
):
qt-configure-module C:\qt\qtwebengine -webengine-proprietary-codecs cmake --build . --parallel
警告
在分发专有编解码器库时,您必须为它们获得许可。
FFmpeg 是一个跨平台解决方案,用于录制、转换和传输音频和视频。它可以配置为使用多个编解码器,与编解码器库一起分发时会产生许可问题。对于某些编解码器,有开源实现,例如 OpenH264 。
WebEngineDriver#
使用WebEngineDriver,您可以在多个浏览器之间自动化网站的测试。WebEngineDriver基于ChromeDriver,可以以相同的方式使用。有关ChromeDriver及其使用的更多信息,请访问 ChromeDriver用户网站 。
WebEngineDriver相对于ChromeDriver有一些微小修改,以便能够连接到基于Qt WebEngine的浏览器。它与Qt WebEngine示例浏览器(如 Simple Browser 或 Nano Browser )兼容。
浏览器自动化通过WebDriver客户端(如 Selenium WebDriver )进行脚本编写。例如,WebEngineDriver可以与Selenium WebDriver的Python语言绑定一起使用
from selenium import webdriver from selenium.webdriver.chrome.service import Service service = Service(executable_path='QTDIR/libexec/webenginedriver') options = webdriver.ChromeOptions() options.binary_location = 'path/to/browser_binary' driver = webdriver.Chrome(service=service, options=options) driver.get("http://www.google.com/") driver.quit()
在此示例中,
executable_path
必须设置为WebEngineDriver的二进制路径
QTDIR
是Qt安装的目录
options.binary_location
必须设置为浏览器的二进制路径
注意
在Windows上:executable_path='QTDIR/bin/webenginedriver.exe'
在执行脚本之前,必须设置环境变量 QTWEBENGINE_REMOTE_DEBUGGING
。其值是一个端口号,该端口号由浏览器和WebEngineDriver共同使用,以实现互相通信。
export QTWEBENGINE_REMOTE_DEBUGGING=12345
执行脚本后,它将打开指定的网页浏览器并加载谷歌网站。
如果浏览器是以已设置远程调试端口号的方式启动的,WebEngineDriver也可以附加到正在运行的浏览器上。《code class="docutils literal notranslate">options.debugger_address必须在脚本中设置为远程调试地址。
options.debugger_address = 'localhost:12345'
在这种情况下,《code class="docutils literal notranslate">options.binary_location不应设置,因为浏览器已经运行。如果设置了《code class="docutils literal notranslate">options.debugger_address》,则WebEngineDriver不会使用环境变量《code class="docutils literal notranslate">QTWEBENGINE_REMOTE_DEBUGGING。
注意
WebEngineDriver必须使用与Qt WebEngine相同的Chromium版本构建。
Chromium DevTools
Chromium DevTools提供了检查和调试任何网页内容布局和性能问题的能力。
可以通过启动带有命令行选项《code class="docutils literal notranslate">--remote-debugging-port=[your-port]的Qt WebEngine应用程序或者通过设置环境变量《code class="docutils literal notranslate">QTWEBENGINE_REMOTE_DEBUGGING然后使用基于Chromium的浏览器(如《span class="xref std std-ref">Simple Browser或《span class="xref std std-ref">Nano Browser)连接到《code class="docutils literal notranslate">http://localhost:[your-port]`来测试此功能。
注意
任何《a class="reference external" href="https://doc.qt.ac.cn/qt-6/qml-qtwebengine-webengine.html">WebEngine命令行选项应在《code class="docutils literal notranslate">--webEngineArgs选项后面指定,该选项用于将用户的应用程序特定选项与《a class="reference external" href="https://doc.qt.ac.cn/qt-6/qml-qtwebengine-webengine.html">WebEngine`的选项分开。
--webEngineArgs --remote-debugging-port=5000
为了避免远程调试期间的WebSocket错误,请添加一个额外的命令行参数《code class="docutils literal notranslate">--remote-allow-origins=<origin>[,<origin>,...],其中《code class="docutils literal notranslate"><origin>指的是请求源。使用《code class="docutils literal notranslate">--remote-allow-origins=*允许所有来源的连接。如果没有指定,Qt WebEngine在启用远程调试时,将自动在命令行参数中添加《code class="docutils literal notranslate">--remote-allow-origins=*,从而允许所有来源的请求。
Chromium DevTools页面也可以在应用程序中显示。为了设置,可以调用《a class="reference internal" href="../PySide6/QtWebEngineCore/QWebEnginePage.html#PySide6.QtWebEngineCore.QWebEnginePage.setInspectedPage" title="PySide6.QtWebEngineCore.QWebEnginePage.setInspectedPage">setInspectedPage()
到要检查的页面,这会隐式地将DevTools加载到当前页面,或者调用《a class="reference internal" href="../PySide6/QtWebEngineCore/QWebEnginePage.html#PySide6.QtWebEngineCore.QWebEnginePage.setDevToolsPage" title="PySide6.QtWebEngineCore.QWebEnginePage.setDevToolsPage">setDevToolsPage()
使当前页面可以被检查。
相应的QML属性是《a class="reference external" href="https://doc.qt.ac.cn/qt-6/qml-qtwebengine-webengineview.html#devToolsView-prop">WebEngineView.devToolsView和《a class="reference external" href="https://doc.qt.ac.cn/qt-6/qml-qtwebengine-webengineview.html#inspectedView-prop">WebEngineView.inspectedView。
有关更多信息,请参阅《span class="xref std std-ref">Qt WebEngine调试和性能分析。
客户端证书#
一些网络服务器(特别是许多内网站点)要求客户端使用证书进行身份验证,这种证书被称为客户端证书。Qt WebEngine会读取在macOS和Windows的系统设置中安装的客户端证书,在Linux中则读取安装到NSS数据库中的证书。可以使用pk12util
工具将证书安装到NSS数据库中。
默认情况下,Qt WebEngine不会向服务器提供任何客户端证书,因为这会唯一识别用户,可能违反隐私期望。
要激活客户端证书的支持,应用程序需要监听selectClientCertificate
或selectClientCertificate
信号,并从提供的证书中选择一个。对于可以访问不受信任的网站的应用程序,建议在将用户唯一标识到一个远程服务器之前始终让用户做出选择。
除了系统设置中存储的客户端证书外,Qt WebEngine还提供内存存储。可以使用clientCertificateStore()
方法获取QWebEngineClientCertificateStore
实例。应用程序可以使用该类通过add()
调用添加新的证书。请注意,在selectClientCertificate
调用期间,Qt WebEngine列出系统存储和内存存储的客户证书。
有关更多信息,请参阅< span class="xref std std-ref">客户端证书示例。
自定义方案#
Qt WebEngine使应用程序能够定义具有专门的安全策略和传输机制的自定义URL方案。
自定义方案可用于实现具有所有常规 Web 安全策略的替代网络协议、显示用户界面组件或调试信息的特权内部方案、具有额外限制的沙盒方案等。
有关更多信息,请参阅QWebEngineUrlScheme
和QWebEngineUrlSchemeHandler
。
拖拽#
Qt WebEngine支持HTML5拖拽。
可以通过在< span class="xref std std-ref">Simple Browser或< span class="xref std std-ref">Nano Browser中打开HTML5拖拽演示(如HTML5 Demos - Drag and Drop ,HTML5 Demos - Simple Drag and Drop ,或HTML5 Demos - Drag and Drop, Automatic Upload)来测试此功能。
将文件拖拽到浏览器中并不是HTML5的一部分,但它是受支持的。可以通过打开HTML5 Demos - File API来测试。
此项功能是在Qt 5.7.0中添加的。
网站图标#
Qt WebEngine支持网页URL图标,即favicon。每个图标都存储在每个QWebEngineProfile
的内部数据库中,可以通过调用icon()
或使用WebEngineView.icon
属性来访问当前加载的内容的图标。
此外,Qt WebEngine 提供了API来访问内部配置文件数据库中已存储的图标。
注意
对于离线配置文件,图标数据库不可用。
QML 站点图标处理#
为了访问图标,已注册了 QQuickImageProvider
。可以通过一个特殊的URL访问此提供程序,其中方案是“image:”,主机是“favicon”。
url
可以是站点图标的URL
url
还可以是网页URL,用于访问其图标
如果有多个图标可用,可以通过指定 Image::sourceSize 属性来选择具有所需大小的图标。如果没有指定 Image::sourceSize 或为 0,将选择可用的最大图标。
图像提供程序将在现有的 WebEngineView 实例中查找请求的图标。首先,它将尝试匹配当前显示的图标。如果没有找到匹配项,它将从数据库请求图标。每个配置文件都有自己的图标数据库,并将其存储在持久存储中,因此即使没有网络连接,也可以访问存储的图标。图标必须先加载到数据库中。
C++ 站点图标处理#
用户可以通过 requestIconForPageURL()
或 requestIconForIconURL()
调用从每个之前已加载的内容中请求图标(每个 QWebEngineProfile
)。请注意,配置文件的数据库存储在持久存储中,且无需网络连接即可访问。
全屏#
Qt WebEngine 支持在全屏模式下查看网络内容。有关更多信息,请参阅 WebEngineSettings.fullscreenSupportEnabled,fullScreenRequested
,FullScreenSupportEnabled
和 fullScreenRequested
。
此功能可以通过在 视频播放器 或 Nano 浏览器 中播放 YouTube 视频并单击全屏图标进入全屏模式进行测试。
此功能的支持自 Qt 5.6.0 开始添加。
硬件加速#
QtWebEngine 尝试使用硬件加速来渲染内容。它使用 OpenGL
或 OpenGLES
API 在 GPU 上执行渲染调用。作为后备方案,当硬件不满足所需的一组 OpenGL 功能时,将使用软件渲染。用户可以通过加载 chrome://gpu
内部页面来检查当前的硬件加速状态。此外,可以使用 QTWEBENGINE_CHROMIUM_FLAGS
并使用 disable-gpu
开关显式禁用加速。例如在 Linux 上
export QTWEBENGINE_CHROMIUM_FLAGS=--disable-gpu
HTML5 DRM#
Qt WebEngine支持查看DRM保护的视频,前提是已安装了Widevine CDM插件。CDM插件是替代基于Flash的插件以显示DRM保护内容的。它只提供二进制格式,因此可以隐藏DRM解密实现细节。它可以从第三方来源或从Google Chrome安装获取。
Qt WebEngine在启动时会在已知位置寻找Widevine CDM插件,如默认Google Chrome安装目录或Linux发行版特定路径。然而,也可以使用QTWEBENGINE_CHROMIUM_FLAGS
通过widevine-path
传递插件位置。
在Windows上
set QTWEBENGINE_CHROMIUM_FLAGS=--widevine-path="C:/some path/widevinecdm.dll"
在Linux上
export QTWEBENGINE_CHROMIUM_FLAGS=--widevine-path="/some path/libwidevinecdm.so"
在macOS上
export QTWEBENGINE_CHROMIUM_FLAGS=--widevine-path="/some path/libwidevinecdm.dylib"
DRM服务最常用的视频格式H.264需要专有的音频和视频编解码器。有关启用编解码器的更多信息,请参阅音频和视频编解码器 。
可以通过在castLabs,Swank Motion Pictures, Inc.,或Bitmovin Player 的Simple Browser或Nano Browser 中播放视频来测试此功能。
此项功能是在Qt 5.7.0中添加的。
HTML5地理位置#
Qt WebEngine支持JavaScript地理位置API,后端使用Qt定位。HTML5地理位置默认禁用。要明确允许,应用程序需要侦听featurePermissionRequested
。使用带有setFeaturePermission()
调用的Geolocation
,或使用带有grantFeaturePermission
()调用的WebEngineView::Feature,来授予所需的权限。
如果Qt WebEngine与Qt定位支持一起构建,则可以通过使用地图并允许其查找用户当前位置来测试此功能。
注意
在Windows 11上,启用设置以授予地图示例访问Windows位置服务的权限。在设置应用中,在隐私和安全>位置下,启用位置服务、让应用访问您的位置和让桌面应用访问您的位置。
有关可能的后端配置,例如基于GPS或IP的位置配置,请参阅Qt定位。
此功能的支持是在Qt 5.5.0中添加的。
HTML5 WebSocket#
Qt WebEngine支持WebSocket JavaScript API,通过ws://
或wss://
协议与WebSocket服务器通信。此外,与Qt WebChannel和Qt WebSocket的集成使得JavaScript与应用程序的本地部分之间可以通信。
Qt WebChannel模块有一个非常好的聊天服务器及其基于Web的聊天客户端的示例。客户端在Qt WebEngine示例浏览器(如Simple Browser或Nano Browser)中可直接运行。
HTTP/2协议#
Qt WebEngine支持Chromium对HTTP/2协议的实现。
该功能可以通过在 Simple Browser 或 Nano Browser 中打开 HTTP/2 示例(例如 Akamai HTTP/2 示例)来进行测试。
本地存储#
Qt WebEngine 支持 Local Storage
的无过期日期键值对存储。这是 Web Storage API 的一部分,用户可以通过 Window.localStorage
JavaScript 属性访问特定域的 Storage
对象。存储的数据即使在页面或浏览器应用关闭后也将持续存在。
请注意,可以通过 LocalStorageEnabled
设置来禁用 Local
Storage。此外,可以使用 setPersistentStoragePath
调整存储路径。
QWebEngineProfile profile("MyProfile"); profile.settings()->setAttribute(QWebEngineSettings::LocalStorageEnabled, isEnabled); profile.setPersistentStoragePath("/path/to/storage");
Qt WebEngine 通过访问应用程序面板并展开本地存储菜单,提供了一个简单的调查 Local
Storage 内容的方法。
原生对话框#
网页可能需要请求以下功能的对话框:
输入 HTTP 和代理身份验证的用户凭据
显示 JavaScript 警报、确认对话框和提示
选择颜色
选择文件
显示表单验证消息
Qt WebEngine 为这些功能提供标准对话框。在基于小部件的应用程序中,标准对话框基于 QDialog,而在 Qt Quick 应用程序中,它们可以基于 Qt Quick Controls 1 或 Qt Quick Controls 2(自 Qt 5.8 以来)。后者仅用于 eglfs
平台。
要显式地强制使用基于 Qt Quick Controls 1 或 Qt Quick Controls 2 的对话框,将 QTWEBENGINE_DIALOG_SET
环境变量设置为 QtQuickControls1
或 QtQuickControls2
。
Qt WebEngine Widgets 对话框可以通过重新实现 chooseFiles()
、javaScriptAlert()
、javaScriptConfirm()
和 javaScriptPrompt()
函数进行自定义。
自 Qt 5.8 开始,Qt Quick 对话框可以通过连接到以下信号来自定义:authenticationDialogRequested()
、javaScriptDialogRequested()
、colorDialogRequested()
、fileDialogRequested()
和 WebEngineView::formValidationMessageRequested()。例如,
Pepper 插件 API#
Qt WebEngine 支持 Pepper 插件 API (PPAPI) 插件的加载,如果 WebEngineSettings::pluginsEnabled 或 PluginsEnabled
被设置为开启。
插件必须使用 Chromium 命令行语法通过带有 --register-pepper-plugins
参数的手动方式加载。参数值是一个由逗号分隔的条目列表,每个条目包含文件路径和由分号分隔的一个或多个 MIME 类型。
<file-path-plugin1>;<mime-type-plugin1>,<file-path-plugin2>;<mime-type1-plugin2>;<mime-type2-plugin2>
例如
--webEngineArgs --register-pepper-plugins="libppapi_example.so;application/x-ppapi-example"
MIME 类型非常重要,因为它决定了用于哪个嵌入插件的场合。
此功能的支持自 Qt 5.6.0 开始添加。
PDF 文件查看#
Qt WebEngine 支持通过导航到它们来查看 PDF 文档。此功能使用 Chromium 扩展 API 和 PDF 查看器插件来显示 PDF 文档。它可以在 Simple Browser 或 Nano Browser 中进行测试。
要使用此功能,需要使用 PluginsEnabled
或 WebEngineSettings::pluginsEnabled 启用插件加载。
此功能可以通过 PdfViewerEnabled
或 WebEngineSettings::pdfViewerEnabled 设置开启(默认)或关闭。
此功能自 Qt 5.13.0 中添加支持。
页面生命周期 API#
Qt WebEngine 支持的页面生命周期 API 规范Page Lifecycle API specification,是 HTML 标准的一个正在进行的扩展,允许用户代理通过冻结或丢弃背景页面来降低其资源消耗。此功能在 Widgets 和 QML API 中都被公开。
关于 QML API 的用法示例,请参阅 WebEngine Lifecycle Example。
此功能自 Qt 5.14.0 中添加支持。
生命周期状态概述#
每个 WebEngineView 项目(或 QWebEnginePage
对象)可以处于三种 生命周期状态 之一:活动、冻结或丢弃。这些状态,就像 CPU 的休眠状态一样,控制着网页的资源配置。
活动状态是网页的正常、不受限制状态。所有可见的网页始终处于活动状态,尚未完全加载的所有网页也是如此。只有不可见、空闲的网页才能转换为其他生命周期状态。
冻结状态是一个低 CPU 使用状态。在此状态下,大多数 HTML 任务源都会挂起(冻结),因此大多数 DOM 事件处理和 JavaScript 执行也将暂停。网页必须不可见,才可被冻结,因为在此状态下无法进行渲染。
已弃用状态是一种极端的资源节省状态。在此状态下,网页视图的浏览上下文将被弃用,对应的渲染进程子进程将被关闭。在此状态下,CPU和内存的使用量几乎降为零。退出此状态时,网页将自动重新加载。进入和退出已弃用状态的过程类似于序列化网页视图的浏览历史并销毁视图,然后创建一个新视图并恢复其历史。
另请参阅 WebEngineView::LifecycleState 。在 Widgets API 中等效的属性是 LifecycleState
。
`` lifecycleState``
和 `` recommendedState``
属性#
WebEngineView 类型的 lifecycleState 属性是一个可读写的属性,用于控制网页视图的当前生命周期状态。该属性旨在尽量减少对可以将哪些状态转换为的约束。例如,允许停止正在后台播放音乐的网页视图,停止音乐。为了实施一种更温和的资源节省策略,避免中断用户可见的后台活动,必须使用 recommendedState 属性。
WebEngineView 类型的 recommendedState 属性是一个只读属性,它根据网页视图的当前活动来计算对 lifecycleState 属性的安全限制。因此,在网页视图在后台播放音乐的例子中,建议的状态将是 Active
,因为更具侵略性的状态会停止音乐。如果应用程序想避免中断后台活动,则应避免将网页视图置于比 recommendedState 给出的更具侵略性的资源节省生命周期状态。
另请参阅 WebEngineView::lifecycleState 和 WebEngineView::recommendedState 。在 Widgets API 中等效的是 lifecycleState
和 recommendedState
。
DOM 扩展#
lifecycleState 属性连接到 页面生命周期 API 规范,该规范定义了两个新的 DOM 事件 freeze
和 resume
,并添加了一个新的布尔属性 Document.wasDiscarded
。当从 Active
状态切换到 Frozen 状态
或相反时,将触发 freeze
和 resume
事件。当从 Discarded
状态切换到 Active
状态时,会将 Document.wasDiscarded
属性设置为 true
。
打印到 PDF#
Qt WebEngine 支持 将网页打印到 PDF 文件。更多信息请参见 printToPdf()
和 printToPdf
。
此功能可以通过 Html2Pdf 进行测试。
此项功能是在Qt 5.7.0中添加的。
处理模型#
Qt WebEngine 使用多个操作系统进程来隔离网站彼此之间以及与客户端应用之间的交互,提高安全性和可靠性。以下这些处理模型,或称为在操作系统进程间划分网站的方式,得到支持:
每个站点实例一个进程#
这是默认模型。来自不同站点的页面被放入不同的进程,并且对同一站点的不同访问也被隔离。
如果两个 Web 页面来自同一已注册域名(例如,wikipedia.org
)和协议(例如,https
),则被视为属于同一站点。这与同源策略类似,但忽略子域。例如,https://en.wikipedia.org/
和 https://de.wikipedia.org/
都会属于同一站点。
站点实例是同一站点的页面集合。当应用程序通过如 setUrl
等明确方式将 URL 载入 Qt WebEngine 时,将为此页面创建一个新的站点实例。然而,当用户单击页面上的同一站点链接时,现有的站点实例仅会通过更多页面进行扩展。
例如,在 Simple Browser 示例中,当用户打开两个标签页并将 https://en.wikipedia.org/
明确输入到 URL 栏中时,两个标签页将各自拥有一个单独的操作系统进程(因为明确输入一个 URL 会创建一个新的站点实例)。然而,当用户随后中间点击一些同一站点的链接打开更多标签页时,这些新标签页将共享同一操作系统进程(因为用户交互扩展了现有的站点实例)。
每个站点一个进程#
来自不同网站的页面被放入不同的进程中。与每个网站实例一个进程不同,同一个网站的访问将共享一个操作系统进程。
这种模式的优点是减少了内存消耗,因为更多网页将共享进程。缺点包括安全性、健壮性和响应性降低。
要启用此模式,请使用命令行参数 --process-per-site
。查看 使用命令行参数。
单进程#
仅用于调试目的,可以使用命令行参数 --single-process
启用单进程模式。查看 使用命令行参数 和 Qt WebEngine 调试和性能分析。
拼写检查#
Qt WebEngine支持将拼写检查集成到HTML表单中,以使用户能够提交拼写检查的消息。当用户单击下划线显示的拼写错误单词时,默认上下文菜单会显示最多四个建议。选择其中一个将替换拼写错误的单词。
要进行拼写检查,拼写检查程序需要字典。它支持Hunspell项目的字典,但它们必须编译成特殊二进制格式。Hunspell字典由两个文件组成
一个
.dic
文件,包含该语言的单词字典一个
.aff
文件,定义字典中特殊标志的含义
这两个文件可以用与Qt一起发布的 qwebengine_convert_dict
工具转换为 bdic
格式。当Qt WebEngine拼写检查程序初始化时,它将尝试加载 bdict
字典,并检查它们的一致性。
如果设置了 QTWEBENGINE_DICTIONARIES_PATH
,则拼写检查器将使用指定目录中的字典,而不会查找其他地方。否则,如果存在,它将使用相对于可执行文件的 qtwebengine_dictionaries 目录。如果不存在,它将在 QT_INSTALL_PREFIX/qtwebengine_dictionaries
中查找。
在macOS上,根据Qt WebEngine在构建时的配置,有两种查找拼写检查数据的方法
Hunspell字典(默认)- 使用 .bdic 字典,就像在其他平台上一样
本地字典 - 使用macOS拼写检查API(这意味着结果将取决于安装的OS字典)
因此,在macOS Hunspell的情况下,Qt WebEngine将在应用程序包中的 qtwebengine_dictionaries 子目录和Qt框架包中的 Resources
目录中查找。
总结一下,在Hunspell使用的情况下,以下路径被考虑
QTWEBENGINE_DICTIONARIES_PATH
,如果设置了QCoreApplication::applicationDirPath()/qtwebengine_dictionaries 或 QCoreApplication::applicationDirPath()/../Contents/Resources/qtwebengine_dictionaries (在macOS上)
[QLibraryInfo::DataPath]/qtwebengine_dictionaries 或 path/to/ QtWebEngineCore .framework/Resources/qtwebengine_dictionaries (Qt框架包在macOS)
拼写检查默认是禁用的,并且可以通过使用基于小部件的应用程序中的 setSpellCheckEnabled(()
方法或Qt Quick应用程序中的 spellCheckEnabled
属性来按配置文件启用。
当前用于拼写检查的语言由个人资料显示定义,并可使用setSpellCheckLanguages()
方法或spellCheckLanguages
属性来设置。
可以通过构建和运行拼写检查示例来测试此功能。
Qt WebEngine可以使用 webengine-spellchecker
配置选项不启用拼写检查功能进行编译。
qt-configure-module path\to\qtwebengine\sources -no-webengine-spellchecker
有关更多信息,请参阅Qt配置选项。
此功能在Qt 5.8.0中添加支持。
触摸#
Qt WebEngine支持触摸设备进行网页的导航和交互。
应用程序可以通过以下方式禁止使用触摸事件:
在命令行中通过传递标志
--touch-events=disabled
来禁用JavaScript API中触摸事件的支持(这意味着ontouchstart
和相关处理程序将不会存在于document.window
对象中)。触摸事件仍然会发送到网页。通过在 WebEngine 视图焦点代理对象上使用 QObject::installEventFilter 安装事件过滤器对象,并过滤掉所有触摸事件。
查看源代码#
Qt WebEngine支持查看网页的HTML源代码。
此功能可用于自定义菜单或将它们分配给自定义事件。有关更多信息,请参阅WebEngineView::WebAction 和 WebAction
。
可以通过在简单浏览器 或 纳米浏览器中打开一个网页,然后在上下文菜单中选择“页面源代码”来测试此功能。在新的标签页中打开源视图的“页面源代码”上下文菜单项。
支持在当前标签页中打开源视图的URL方案。例如,可以向地址栏输入以下URL来查看qt.io网页的HTML源代码
view-source:https://www.qt.io/
使用view-source URI方案自动完成不完整的URL会使此功能的用法更舒适。例如,以下不完整的URL也会加载qt.io网页的源视图
view-source:qt.io
此功能在Qt 5.8.0中添加支持。
Web通知#
Qt WebEngine支持JavaScript Web Notifications API。应用程序必须通过使用 Notifications
或 WebEngineView.Notifications 显式允许此功能。
此功能自 Qt 5.13.0 中添加支持。
WebGL#
Qt WebEngine支持在某些图形堆栈配置中启用WebGL。用户可以使用QtWebEngine应用程序访问chrome://gpu
页面。在图形功能状态概述中显示当前平台配置是否支持WebGL。用户还可以检查WebGL报告。
WebGL支持默认启用。您可以使用WebGLEnabled
设置禁用它。
WebRTC
WebRTC通过网络简单的API为浏览器提供实时通信(RTC)功能。更多信息请参考WebEngineView.Feature和Feature
。
该功能可以通过设置摄像头或麦克风然后打开https://test.webrtc.org/
在简单浏览器或Nano浏览器中来测试。