Qt WebEngine 功能
Qt WebEngine 支持以下功能:
- 音频和视频编解码器
- 网络引擎驱动程序
- Chromium 开发工具
- 客户端证书
- 自定义方案
- 拖放
- 图标
- 全屏
- 硬件加速
- HTML5 DRM
- HTML5 地理定位
- HTML5 WebSockets
- HTTP/2 协议
- 本地存储
- 本地对话框
- PDF 文件查看
- 页面生命周期 API
- 打印为 PDF
- 处理模型
- 拼写检查器
- 触摸
- 查看源文件
- 网络通知
- WebGL
- WebRTC
音频和视频编解码器
Qt WebEngine 只有启用了所需的专有音频和视频编解码器(如 H.264 和 MPEG layer-3 (MP3)),WebRTC 才能支持 MPEG-4 Part 14 (MP4) 文件格式。在配置 Qt 时,可通过向 工具传递以下选项来启用专有编解码器:configure
-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 基于 ChromeDriver,使用方法相同。有关 ChromeDriver 及其使用的更多信息,请访问ChromeDriver 用户网站。
WebEngineDriver 与 ChromeDriver 相比略有改动,以便能够连接到基于Qt WebEngine 的浏览器。它兼容Qt WebEngine 示例浏览器,如Simple Browser或Nano Browser。
浏览器自动化通过类似Selenium WebDriver 的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
执行后,脚本将打开指定的网络浏览器并加载 Google 网站。
如果浏览器在启动时设置了远程调试端口,WebEngineDriver 也可以连接到已运行的浏览器。options.debugger_address
必须设置为脚本中的远程调试地址:
options.debugger_address = 'localhost:12345'
在这种情况下,不应设置options.binary_location
,因为浏览器已经在运行。如果设置了options.debugger_address
,WebEngineDriver 将不会使用环境变量QTWEBENGINE_REMOTE_DEBUGGING
。
注意: WebEngineDriver 必须与Qt WebEngine 使用的 Chromium 版本相同。
Chromium DevTools
Chromium DevTools 可检查和调试任何网页内容的布局和性能问题。
使用命令行选项--remote-debugging-port=[your-port]
启动Qt WebEngine 应用程序,或设置环境变量QTWEBENGINE_REMOTE_DEBUGGING
,然后使用基于 Chromium 的浏览器(如Simple Browser或Nano Browser)连接http://localhost:[your-port]
,即可测试该功能。
--webEngineArgs --remote-debugging-port=5000
为避免远程调试时出现 WebSocket 错误,请添加一个额外的命令行参数--remote-allow-origins=<origin>[,<origin>, ...]
,其中<origin>
指的是请求来源。使用--remote-allow-origins=*
允许来自所有来源的连接。如果未指定任何参数,当启用远程调试时,Qt WebEngine 会在命令行参数中添加--remote-allow-origins=*
,从而允许来自所有来源的请求。
Chromium DevTools 页面也可以在应用程序中显示。要进行设置,你可以调用QWebEnginePage::setInspectedPage() 到要检查的页面,这样会将 DevTools 隐式加载到this
页面,或者调用QWebEnginePage::setDevToolsPage() 让this
页面被检查。
相应的 QML 属性是WebEngineView.devToolsView 和WebEngineView.inspectedView 。
更多信息,请参阅Qt WebEngine 调试和剖析。
客户端证书
Qt WebEngine 会读取安装在 macOS 和 Windows 系统设置中的客户端证书,以及安装在 Linux NSS 数据库中的客户端证书。可使用pk12util
工具将证书安装到 NSS 数据库中。
默认情况下,Qt WebEngine 不会向服务器提供任何客户端证书,因为这样做可以唯一识别用户身份,并可能违反隐私保护规定。
要激活对客户端证书的支持,应用程序需要监听QWebEnginePage::selectClientCertificate 或WebEngineView.selectClientCertificate 信号,并从提供的证书中选择一个。对于可以浏览不受信任网站的应用程序,建议在向远程服务器唯一标识用户身份之前,始终让用户有选择的余地。
除了存储在系统设置中的客户端证书外,Qt WebEngine 还提供内存存储。QWebEngineClientCertificateStore 实例可通过QWebEngineProfile::clientCertificateStore() 方法获取。应用程序可使用该类调用QWebEngineClientCertificateStore::add() 添加新证书。请注意,在调用selectClientCertificate
时,Qt WebEngine 会同时列出系统和内存中存储的客户证书。
更多实现细节,另请参阅客户证书示例。
自定义方案
Qt WebEngine 使应用程序可以使用专门的安全策略和传输机制定义自己的自定义 URL 方案。
自定义方案可用于实施具有所有常用网络安全策略的替代网络协议、用于显示用户界面组件或调试信息的特权内部方案、具有额外限制的沙盒方案等。
更多信息,请参阅QWebEngineUrlScheme 和QWebEngineUrlSchemeHandler 。
拖放
Qt WebEngine 支持 HTML5 拖放。
可以在简单浏览器或Nano 浏览器中打开 HTML5 拖放演示,如 HTML5演示 - 拖放、HTML5 演示- 简单拖放或HTML5 演示 - 拖放,自动上传,来测试该功能。
将文件拖入浏览器实际上并不是 HTML5 的一部分,但它是受支持的。可以通过打开HTML5 演示--文件 API 进行测试。
Qt 5.7.0 中添加了对该功能的支持。
图标
Qt WebEngine 支持网站 URL 图标,即favicon。每个图标都存储在每个 的内部数据库中,可以使用 () 调用或 属性访问当前加载的内容。QWebEngineProfile QWebEnginePage::icon WebEngineView.icon
此外,Qt WebEngine 还提供 API,用于访问内部配置文件数据库中已存储的图标。
注: 图标数据库不适用于非记录配置文件。
QML Favicon 处理
为访问图标,注册了QQuickImageProvider
。可通过特殊 URL 访问该提供者,其中方案为 "image:",主机为 "favicon"。
Image { source: "image://favicon/url" }
url
可以是 favicon 的 URL:
Image { source: "image://favicon/https://www.qt.io/hubfs/2016_Qt_Logo/qt_logo_green_rgb_16x16.png" }
url
也可以是访问其图标的页面 URL:
Image { source: "image://favicon/https://www.qt.io/" }
如果有多个图标可用,可指定Image::sourceSize 属性,以选择所需大小的图标。如果Image::sourceSize 未指定或为 0,则将选择最大的可用图标。
图片提供程序会在现有的WebEngineView 实例中查找请求的图标。首先,它会尝试匹配当前显示的图标。如果没有找到匹配的图标,它就会从数据库中请求图标。每个配置文件都有自己的图标数据库,并存储在持久存储器中,因此无需网络连接也能访问存储的图标。图标必须事先加载过才能存储到数据库中。
C++ 图标处理
用户可以使用QWebEngineProfile::requestIconForPageURL() 或QWebEngineProfile::requestIconForIconURL() 调用,从先前加载的内容中为每个QWebEngineProfile 请求一个图标。请注意,配置文件的数据库存储在持久存储器中,无需网络连接即可访问。
全屏
Qt WebEngine 支持以全屏模式查看网页内容。更多信息,请参阅 , , 和 。WebEngineSettings.fullscreenSupportEnabled WebEngineView.fullScreenRequested QWebEngineSettings::FullScreenSupportEnabled QWebEnginePage::fullScreenRequested
测试该功能的方法是在视频播放器或Nano 浏览器中播放 YouTube 视频,然后单击全屏图标进入全屏模式。
Qt 5.6.0 添加了对该功能的支持。
硬件加速
QtWebEngine 尝试使用硬件加速来渲染内容。它使用 或 API 在 GPU 上执行渲染调用。如果硬件无法满足所需的 OpenGL 功能,则会使用软件渲染作为后备。用户可以通过加载 内部页面来检查当前的硬件加速状态。此外,还可以通过 使用 开关显式禁用加速。例如在 Linux 上:OpenGL
OpenGLES
chrome://gpu
QTWEBENGINE_CHROMIUM_FLAGS
disable-gpu
export QTWEBENGINE_CHROMIUM_FLAGS=--disable-gpu
HTML5 DRM
Qt WebEngine 如果安装了Widevine CDM插件,则支持观看受 DRM 保护的视频。CDM 插件可替代基于 Flash 的插件,用于显示受 DRM 保护的内容。它只有二进制格式,因此可以隐藏 DRM 解密的实施细节。它可以从第三方或 Google Chrome 浏览器中获取。
Qt WebEngine 启动时,Widevine CDM插件会在众所周知的位置查找,如默认的谷歌浏览器安装目录或 Linux 发行版的特定路径。不过,也可以使用 通过 传递插件位置。widevine-path
QTWEBENGINE_CHROMIUM_FLAGS
在 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 的简单浏览器或纳米浏览器中播放视频来测试此功能。
Qt 5.7.0 中添加了对该功能的支持。
HTML5 地理定位
Qt WebEngine 支持以 Qt Positioning作为后端。HTML5 地理定位默认为禁用。要显式允许该功能,应用程序需要监听QWebEnginePage::permissionRequested 。当收到类型为QWebEnginePermission::PermissionType::Geolocation 的权限请求时,可以在收到的对象上调用QWebEnginePermission::grant() 来授予所需的权限。
如果Qt WebEngine 是在支持Qt Positioning 的情况下构建的,那么可以通过使用地图并允许其查找用户当前位置来测试该功能。
注: 在 Windows 11 中,启用设置以授予地图示例访问 Windows 定位服务的权限。在Privacy & Security >Location 下的 "设置 "应用程序中,启用Location services 、Let apps access your location 和Let desktop apps access your location 。
请参见 Qt Positioning了解可能的后端设置,如基于 GPS 或 IP 的定位。
Qt 5.5.0 添加了对该功能的支持。
HTML5 WebSockets
Qt WebEngine 支持使用 或 协议与 WebSocket 服务器通信的 WebSocket JavaScript API。此外,与 和 集成后,JavaScript 可与应用程序的本地端进行通信。ws://
wss://
Qt WebChannel Qt WebSockets
Qt WebChannel 模块有一个很好的聊天服务器及其基于网络的聊天客户端示例。该客户端在Qt WebEngine 的浏览器示例(如Simple Browser或Nano Browser)中开箱即用。
HTTP/2 协议
Qt WebEngine Chromium 支持HTTP/2协议的 Chromium 实现。
在简单浏览器或Nano 浏览器中打开 HTTP/2 演示(如Akamai HTTP/2 演示)即可测试该功能。
本地存储
Qt WebEngine 支持在 中保存键值对,且无过期日期。这是Local Storage
网络存储 API 的一部分,用户可以使用 JavaScript 属性访问给定域的 对象。即使在页面或浏览器应用程序关闭后,存储的数据也会持续存在。Window.localStorage
Storage
请注意,QWebEngineSettings::LocalStorageEnabled 设置也可以禁用Local
存储。此外,还可以通过调用QWebEngineProfile::setPersistentStoragePath 调整存储路径。
QWebEngineProfile profile("MyProfile"); profile.settings()->setAttribute(QWebEngineSettings::LocalStorageEnabled, isEnabled); profile.setPersistentStoragePath("/path/to/storage");
Qt WebEngine 您还可以访问 面板并展开 菜单,使用Application Local Storage Qt WebEngine 开发人员工具轻松查看 的内容。Local Storage
本地对话框
网页可能需要对话框来实现以下功能:
- 为 HTTP 和代理验证输入用户凭证
- 显示 JavaScript 警告、确认对话框和提示
- 选择颜色
- 选择文件
- 显示表单验证信息
Qt WebEngine 为这些功能提供了标准对话框。在基于 Widget 的应用程序中,标准对话框基于 ,而在 应用程序中,它们可以基于 1 或 2(自 Qt 5.8 起)。后者仅用于 平台。QDialog Qt Quick Qt Quick Controls Qt Quick Controls eglfs
要明确强制使用基于Qt Quick Controls 1 或Qt Quick Controls 2 的对话框,可将QTWEBENGINE_DIALOG_SET
环境变量设置为QtQuickControls1
或QtQuickControls2
。
Qt WebEngine 可以通过重新实现 (), (), () 和 () 函数来定制 Widgets 对话框。QWebEnginePage::chooseFiles QWebEnginePage::javaScriptAlert QWebEnginePage::javaScriptConfirm QWebEnginePage::javaScriptPrompt
自 Qt 5.8 起,Qt Quick 对话框可通过连接WebEngineView::authenticationDialogRequested(),WebEngineView::javaScriptDialogRequested(),WebEngineView::colorDialogRequested(),WebEngineView::fileDialogRequested(), 和 WebEngineView::formValidationMessageRequested() 信号进行自定义。
查看 PDF 文件
Qt WebEngine 支持通过导航查看 PDF 文档。该功能使用 Chromium 扩展 API 和 PDF 浏览器插件来显示 PDF 文档。可在简单浏览器或纳米浏览器中进行测试。
要使用此功能,需要使用QWebEngineSettings::PluginsEnabled 或WebEngineSettings::pluginsEnabled 启用加载插件。
该功能可通过QWebEngineSettings::PdfViewerEnabled 或WebEngineSettings::pdfViewerEnabled 设置开启(默认)或关闭。
Qt 5.13.0 添加了对该功能的支持。
页面生命周期 API
Qt WebEngine 支持页面生命周期 API 规范,该规范是 HTML 标准的一个正在进行中的扩展,允许用户代理通过冻结或丢弃后台页面来减少资源消耗。该功能在 Widgets 和 QML API 中均有体现。
有关使用 QML API 的示例,请参阅WebEngine 生命周期示例。
Qt 5.14.0 添加了对该功能的支持。
生命周期状态概述
每个WebEngineView 项目(或QWebEnginePage 对象)都可以处于三种生命周期状态之一:激活、冻结或丢弃。这些状态就像 CPU 的休眠状态一样,控制着网页视图的资源使用情况。
活动状态是网络视图的正常、不受限制的状态。所有可见的网络视图始终处于活动状态,所有尚未完成加载的网络视图也是如此。只有不可见的空闲网络视图才能过渡到其他生命周期状态。
冻结状态是 CPU 占用率较低的状态。在这种状态下,大多数 HTML 任务源都会暂停(冻结),因此大多数 DOM 事件处理和 JavaScript 执行也会暂停。网络视图必须是不可见的才能被冻结,因为在这种状态下无法进行渲染。
丢弃状态是一种极端节省资源的状态。在这种状态下,网络视图的浏览上下文将被丢弃,相应的呈现器子进程也将关闭。在这种状态下,CPU 和内存的使用率几乎降为零。退出该状态后,网页将自动重新加载。进入和退出丢弃状态的过程类似于序列化网页视图的浏览历史记录并销毁视图,然后创建一个新视图并恢复其历史记录。
另请参阅WebEngineView::LifecycleState 。Widgets API 中的相应代码是QWebEnginePage::LifecycleState 。
lifecycleState
和recommendedState
属性
WebEngineView 类型的lifecycleState 属性是一个读写属性,用于控制网络视图的当前生命周期状态。该属性旨在尽可能减少对可转换状态的限制。例如,允许冻结当前正在播放背景音乐的网络视图,停止播放音乐。为了实施一种不那么激进的节省资源策略,避免中断用户可见的后台活动,必须使用recommendedState 属性。
WebEngineView 类型的recommendedState 属性是一个只读属性,它会根据网页视图的当前活动计算lifecycleState 属性的安全限制。因此,在网络视图后台播放音乐的示例中,推荐的状态将是Active
,因为更激进的状态会停止音乐播放。如果应用程序希望避免中断后台活动,那么就应该避免让网络视图进入比recommendedState 所给出的更积极的节省资源生命周期状态。
另请参见WebEngineView::lifecycleState 和WebEngineView::recommendedState 。Widgets API 中的相应内容是QWebEnginePage::lifecycleState 和QWebEnginePage::recommendedState 。
DOM 扩展
lifecycleState 属性与页面生命周期 API 规范相连,后者规定了两个新的 DOM 事件freeze
和resume
,并添加了一个新的Document.wasDiscarded
布尔型属性。从Active
过渡到Frozen state
时,会触发freeze
和resume
事件,反之亦然。从Discarded
状态过渡到Active
状态时,Document.wasDiscarded
属性将设置为true
。
打印为 PDF
Qt WebEngine 支持将网页打印为 PDF 文件。更多信息,请参阅 () 和 。QWebEnginePage::printToPdf WebEngineView.printToPdf
该功能可使用Html2Pdf 进行测试。
Qt 5.7.0 添加了对该功能的支持。
流程模型
Qt WebEngine Qt 5.0 支持使用多个操作系统进程将网站相互隔离,并与客户端应用程序隔离,从而提高安全性和稳健性。支持以下进程模型,或在操作系统进程间划分网站的方法:
每个站点实例的进程
这是默认模式。来自不同网站的页面被放入不同的进程,对同一网站的不同访问也被隔离。
如果两个网页来自相同的注册域名(如wikipedia.org
)和方案(如https
),则视为属于同一网站。这与同源策略类似,但会忽略子域。例如,https://en.wikipedia.org/
和https://de.wikipedia.org/
都属于同一网站。
站点实例是属于同一站点的网页集合。当应用程序将 URL 明确加载到Qt WebEngine 时(例如通过QWebEnginePage::setUrl ),就会为该网页创建一个新的站点实例。但是,当用户点击页面上的同一站点链接时,现有的站点实例只是扩展了更多的页面。
例如,在 "简单浏览器"示例中,当用户打开两个标签页并在 URL 栏中明确输入https://en.wikipedia.org/
时,两个标签页都将有各自独立的操作系统进程(因为明确输入 URL 会创建一个新的网站实例)。但是,当用户中键点击一些相同网站的链接打开更多标签页时,这些新标签页将共享同一个操作系统进程(因为用户交互扩展了现有网站实例)。
每个网站的进程
来自不同网站的页面被放入不同的进程。与每个网站实例进程不同的是,对同一网站的所有访问都将共享一个操作系统进程。
这种模式的好处是减少内存消耗,因为更多网页将共享进程。缺点是安全性、健壮性和响应速度降低。
要启用这种模式,请使用命令行参数--process-per-site
。请参阅使用命令行参数。
单进程
仅出于调试目的,可使用命令行参数--single-process
启用单进程模式。请参阅使用命令行参数和Qt WebEngine 调试和剖析。
拼写检查程序
Qt WebEngine 支持将拼写检查支持集成到 HTML 表单中,以便用户提交经过拼写检查的信息。当用户点击下划线拼写错误的单词时,默认的上下文菜单会显示多达四种建议。选择其中一个即可替换拼写错误的单词。
为了检查拼写,拼写检查程序需要词典。它支持来自Hunspell 项目的词典,但这些词典必须编译成一种特殊的二进制格式。Hunspell 词典由两个文件组成:
- 一个
.dic
文件,它是一个包含语言单词的词典 - 一个
.aff
文件,用于定义字典中特殊标志的含义
这两个文件可以通过 Qt XML 随附的qwebengine_convert_dict
工具转换成bdic
格式。当Qt WebEngine 拼写检查程序初始化时,它会尝试加载bdict
词典,并检查它们是否一致。
对于 CMake,可以使用qt_add_webengine_dictionary命令将 Hunspell.dic
文件转换为.bdic
二进制格式。该命令会创建一个qtwebengine_dictionaries
target,您的项目可以将其作为依赖项。
如果设置了QTWEBENGINE_DICTIONARIES_PATH
,拼写检查程序就会使用指定目录下的词典,而不会查找其他地方。否则,它将使用可执行文件中的qtwebengine_dictionaries目录(如果存在)。如果不存在,它将在QT_INSTALL_PREFIX/qtwebengine_dictionaries
目录中查找。
在 macOS 上,根据Qt WebEngine 在构建时的配置,拼写检查数据的查找方式有两种可能:
- Hunspell 词典(默认)- 与其他平台一样,使用 .bdic 词典
- 本地词典 - 使用 macOS 拼写检查 API(这意味着结果将取决于已安装的操作系统词典)
因此,在 macOS Hunspell 的情况下,Qt WebEngine 将查找位于应用程序捆绑包Resources
目录内的qtwebengine_dictionaries子目录,以及位于 Qt framework 捆绑包内的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 (macOS 上的 Qt 框架捆绑包)
拼写检查默认为禁用,可通过在基于 widget 的应用程序中使用QWebEngineProfile::setSpellCheckEnabled() 方法和在Qt Quick 应用程序中使用WebEngineProfile.spellCheckEnabled 属性按配置文件启用。
用于拼写检查的当前语言是按配置文件定义的,可使用QWebEngineProfile::setSpellCheckLanguages() 方法或WebEngineProfile.spellCheckLanguages 属性进行设置。
可以通过构建并运行Spellchecker 示例来测试该功能。
Qt WebEngine 使用 configure 开关,还可以编译出不支持拼写检查程序的版本。webengine-spellchecker
qt-configure-module path\to\qtwebengine\sources -no-webengine-spellchecker
更多信息,请参阅Qt 配置选项。
Qt 5.8.0 添加了对该功能的支持。
触摸
Qt WebEngine 支持触摸设备导航和与网页交互。
JavaScript API 对触摸事件的支持取决于触摸屏的存在(也就是说,如果系统连接了触摸设备,ontouchstart
和相关处理程序将出现在document.window
对象中)。
有些网站使用此 API 来决定是在移动设备上运行还是在台式机上运行,并以此为基础进行设计。这可能会在触摸屏笔记本电脑或其他模拟假触摸设备的设置上造成不必要的结果。
应用程序可通过QWebEngineSettings::TouchEventsApiEnabled 明确设置此功能。
请注意,即使禁用了 API,触摸事件仍会发送到网页。可以在WebEngine 视图焦点代理对象上使用QObject::installEventFilter 安装一个事件过滤对象,并过滤掉所有触摸事件,从而禁止向网页发送触摸事件。
视图源
Qt WebEngine 支持查看网页的 HTML 源代码。
该功能可在自定义菜单中使用,也可分配给自定义事件。更多信息,请参阅WebEngineView::WebAction, 和QWebEnginePage::WebAction 。
在简单浏览器或纳米浏览器中打开网页,然后在上下文菜单中选择Page Source
,即可测试该功能。Page Source
上下文菜单项会在新标签页中打开源视图。
要在当前标签页中打开源视图,还支持带有视图-源 URI 方案的URL。例如,你可以在 URL 栏中输入以下 URL 来查看 qt.io 网页的 HTML 源代码:
view-source:https://www.qt.io/
自动完成带有视图-源 URI 方案的不完整 URL 使该功能的使用更方便。例如,以下不完整的 URL 也能加载 qt.io 网页的源视图:
view-source:qt.io
Qt 5.8.0 添加了对该功能的支持。
网页通知
QtWebEngine 支持 JavaScriptWeb Notifications API。应用程序必须使用 QWebEnginePage::Notifications 或WebEngineView.Notifications 明确允许该功能。
Qt 5.13.0 添加了对该功能的支持。
WebGL
Qt WebEngine 支持某些图形堆栈设置的 WebGL。用户可以使用 powered 应用程序访问 chrome://gpu 页面。QtWebEngine 图形功能状态概览会显示当前平台设置是否支持 WebGL。用户还可以查看WebGL 报告。
WebGL 支持默认已启用。您可以通过QWebEngineSettings::WebGLEnabled 设置将其禁用。
WebRTC
WebRTC 通过简单的 API 为浏览器提供实时通信(RTC)功能。更多信息,请参阅WebEngineView.Feature 和 QWebEnginePage::Feature。
该功能可通过设置网络摄像头或麦克风,然后在简单浏览器或纳米浏览器中打开https://test.webrtc.org/
进行测试。
© 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.