Qt WebEngine 特性

Qt WebEngine 支持以下特性

音频和视频编解码器

仅当启用所需的专有音频和视频编解码器(如 H.264 和 MPEG 层 3 (MP3))时,Qt WebEngine 才支持 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,您可以为跨浏览器的网站自动化测试。WebEngineDriver 基于 ChromeDriver,可以以相同的方式使用。有关 ChromeDriver 及其使用的更多信息,请访问 ChromeDriver 用户网站

WebEngineDriver 与 ChromeDriver 相比略有修改,能够连接到基于 Qt WebEngine 的浏览器。它与 Qt WebEngine 示例浏览器兼容,例如 Simple BrowserNano Browser

浏览器自动化通过 WebDriver 客户端脚本化,如 Selenium WebDriver。例如,可以使用 Selenium WebDriver 的 Python 子程序与本示例中的 WebEngineDriver 一起使用

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 BrowserNano Browser)连接到 http://localhost:[your-port] 来测试此功能。

注意:所有 WebEngine 命令行选项都应该在 --webEngineArgs 选项之后指定,该选项用于将用户的应用程序特定选项与 WebEngine 的选项分开。

--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.devToolsViewWebEngineView.inspectedView

有关更多信息,请参阅 Qt WebEngine 调试和性能分析

客户端证书

一些网页服务器,特别是许多内网网站,要求客户端使用证书进行自身认证,称为 客户端证书。Qt WebEngine 将读取 macOS 和 Windows 系统设置中安装的客户端证书,在 Linux 上是安装在 NSS 数据库中的证书。可以使用 pk12util 工具将证书安装到 NSS 数据库中。

默认情况下,Qt WebEngine 不会向服务器提供任何客户端证书,因为这样做会唯一标识用户,可能会违反隐私预期。

要激活客户端证书支持,应用程序需要监听QWebEnginePage::selectClientCertificateWebEngineView.selectClientCertificate信号,并选择所提供证书中的一个。对于可以导航到不受信任网站的应用程序,建议在唯一地将用户识别到远程服务器之前,始终给用户提供选择。

除了系统设置中存储的客户端证书外,Qt WebEngine还提供内存存储。可以通过QWebEngineProfile::clientCertificateStore()方法获取QWebEngineClientCertificateStore实例。应用程序可以使用该类通过QWebEngineClientCertificateStore::add()调用添加新的证书。注意,在selectClientCertificate调用期间,Qt WebEngine列出了系统和内存中存储的客户端证书。

有关更多实现细节,请参阅客户端证书示例

自定义方案

Qt WebEngine使应用程序能够定义其自己的自定义URL方案,并具有专门的策略和安全传输机制。

自定义方案可以用于实现具有所有常规Web安全策略的替代网络协议、显示用户界面组件或调试信息的特权内部方案、具有额外限制的沙箱方案等。

有关更多信息,请参阅QWebEngineUrlSchemeQWebEngineUrlSchemeHandler

拖放

Qt WebEngine支持HTML5拖放。

此特性可以通过在Simple BrowserNano Browser中打开HTML5拖放演示来测试,例如HTML5 Demos - Drag and DropHTML5 Demos - Simple Drag and DropHTML5 Demos - Drag and Drop, Automatic Upload

将文件拖入浏览器实际上不是HTML5的一部分,但它是受支持的。可以通过打开HTML5 Demos - File API进行测试。

此功能在Qt 5.7.0中添加支持。

网站图标

Qt WebEngine支持网站URL图标favicon。每个图标存储在每个QWebEngineProfile的内部数据库中,可以通过QWebEnginePage::icon()调用或当前加载内容的WebEngineView.icon属性来访问。

此外,Qt WebEngine还提供了用于访问内部配置文件数据库中已存储图标的API。

注意:图标数据库对离线配置文件不可用。

QML网站图标处理

为了访问图标,注册了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()或requestIconForIconURL()调用,从先前加载的内容请求每个QWebEngineProfile的图标。请注意,配置文件的数据库存储在持久存储中,可以在无需网络连接的情况下访问。

全屏

Qt WebEngine 支持以全屏模式查看网络内容。更多相关信息,请参阅 WebEngineSettings.fullscreenSupportEnabledWebEngineView.fullScreenRequestedQWebEngineSettings::FullScreenSupportEnabledQWebEnginePage::fullScreenRequested

可以通过在视频播放器Nano 浏览器中播放 YouTube 视频并点击全屏图标进入全屏模式来测试此功能。

此功能是在 Qt 5.6.0 中添加的。

硬件加速

QtWebEngine试图使用硬件加速来渲染内容。它使用OpenGLOpenGLES API在 GPU 上执行渲染调用。作为备选方案,在硬件不满足所需的 OpenGL 功能集时使用软件渲染。用户可以通过加载chrome://gpu内部页面来检查当前硬件加速状态。此外,可以通过使用QTWEBENGINE_CHROMIUM_FLAGS并使用disable-gpu开关明确禁用加速。例如,在 Linux 上

export QTWEBENGINE_CHROMIUM_FLAGS=--disable-gpu

HTML5 数字版权管理

如果已安装了Widevine CDM插件,Qt WebEngine 支持查看受数字版权管理保护的视频。CDM 插件是用于显示数字版权管理内容的基于 Flash 的插件的替代品。它仅以二进制格式提供,因此可以隐藏数字版权管理解密实现的细节。可以从第三方或从 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"

由数字版权管理服务最常使用的视频格式 H.264 需要专有的音频和视频编解码器。有关启用编解码器的更多信息,请参阅音频和视频编解码器

可以通过在简易浏览器纳米浏览器中播放视频,或在castLabsSwank Motion Pictures, Inc.Bitmovin Player中进行测试。

此功能在Qt 5.7.0中添加支持。

HTML5 地理位置定位

Qt WebEngine 支持使用 Qt 定位 作为后端支持 JavaScript 地理定位 API。HTML5 地理定位默认禁用。要显式允许它,应用程序需要监听 QWebEnginePage::featurePermissionRequested。可以使用 QWebEnginePage::Geolocation 和一个 QWebEnginePage::setFeaturePermission() 调用或使用 WebEngineView::Feature 与一个 WebEngineView.grantFeaturePermission() 调用来授权所需的权限。

如果 Qt WebEngine 使用 Qt 定位支持构建,则可以测试使用 地图 并允许它找到用户当前位置的功能。

注意:在 Windows 11 上,请启用设置以授予地图示例对 Windows 位置服务的访问权限。在“设置”应用中,在 隐私与安全 > 位置 下,启用 位置服务让应用访问您的位置让桌面应用访问您的位置

请参阅 Qt 定位 了解后台设置是 GPS 还是基于 IP 的定位。

Qt 5.5.0 添加了对该功能的支持。

HTML5 WebSocket

Qt WebEngine 支持使用 ws://wss:// 协议与 WebSocket 服务器通信的 WebSocket JavaScript API。此外,Qt WebChannel 和 Qt WebSockets 的集成使得 JavaScript 和应用程序的本地表层之间可以进行通信。

Qt WebChannel 模块提供了一个聊天服务器的实例,以及其基于 Web 的聊天客户端。客户端在 Qt WebEngine 的示例浏览器中(如 简易浏览器纳米浏览器)中即可直接使用。

HTTP/2 协议

Qt WebEngine 支持 Chromium 对 HTTP/2 协议的实现。

可以在 简易浏览器纳米浏览器 中打开 HTTP/2 演示,如 Akamai HTTP/2 演示,来测试该功能。

本地存储

Qt WebEngine 支持在无过期日期的 Local Storage 中保存键值对。这是 Web Storage API 的一部分,用户可以使用 Window.localStorage JavaScript 属性,通过给定域名访问 Storage 对象。存储的数据即使在页面或浏览器应用程序关闭后也会持续存在。

请注意,Local Storage 可以通过 QWebEngineSettings::LocalStorageEnabled 设置禁用。此外,可以通过 QWebEngineProfile::setPersistentStoragePath 调用来调整存储路径。

QWebEngineProfile profile("MyProfile");
profile.settings()->setAttribute(QWebEngineSettings::LocalStorageEnabled, isEnabled);
profile.setPersistentStoragePath("/path/to/storage");

Qt WebEngine还提供了一种通过访问应用程序面板并展开本地存储菜单来使用Qt WebEngine开发者工具 (Qt WebEngine开发者工具) 来轻松调查本地存储内容的方法。

原生对话框

网页可能请求执行以下功能的对话框

  • 输入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设置为QtQuickControls1QtQuickControls2

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()信号来自定义。例如,

Pepper插件API

如果设置了WebEngineSettings::pluginsEnabledQWebEngineSettings::PluginsEnabled,Qt WebEngine支持加载Pepper插件API (PPAPI)插件。

必须使用包含--register-pepper-plugins参数的Chromium命令行语法手动加载插件。参数值是一个条目列表,由逗号分隔,包含文件路径和一个或多个由分号分隔的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文档。它可以在简单浏览器Nano浏览器中测试。

要使用此功能,需要使用QWebEngineSettings::PluginsEnabledWebEngineSettings::pluginsEnabled启用加载插件。

可以通过QWebEngineSettings::PdfViewerEnabledWebEngineSettings::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

lifecycleStaterecommendedState属性

WebEngineView类型的lifecycleState属性是一个可读写的属性,用于控制网页视图的当前生命周期状态。此属性旨在将尽可能少的限制应用于可以转换到的状态。例如,可以冻结正在后台播放音乐的网页视图,并停止音乐。为了实现一种不那么激进的资源节省策略,避免中断用户可见的背景活动,必须使用recommendedState属性。

WebEngineView类型的recommendedState属性是一个只读属性,它在考虑网页视图当前活动的情况下计算了lifecycleState属性的一个安全限制。因此,在一个网页视图在后台播放音乐的例子中,建议状态将是Active,因为更激进的状态会停止音乐。如果应用程序想避免中断后台活动,则应避免将网页视图放入比recommendedState给出的更激进的资源节省生命周期状态。

另请参阅WebEngineView::lifecycleStateWebEngineView::recommendedState。Widgets API中的等效物是QWebEnginePage::lifecycleStateQWebEnginePage::recommendedState

DOM扩展

生命周期状态属性lifecycleState连接到页面生命周期API规范,该规范定义了两个新的DOM事件freezeresume,并添加了一个新的布尔属性Document.wasDiscarded。当从Active状态过渡到Frozen状态以及反过来时,会触发freezeresume事件。Document.wasDiscarded属性会在从Discarded状态过渡到Active状态时被设置为true

Qt WebEngine支持将网页打印到PDF文件。更多信息,请参阅QWebEnginePage::printToPdf()和WebEngineView.printToPdf

该功能可以通过Html2Pdf进行测试。

此功能在Qt 5.7.0中添加支持。

进程模型

Qt WebEngine使用多个操作系统进程来隔离网站以及与客户端应用程序,从而提高安全性和健壮性。以下进程模型(或在操作系统进程之间划分网站的方式)被支持:

按每个网站实例进程

这是默认模型。来自不同网站的页面被放入不同的进程,并且对同一网站的单独访问也将被隔离。

如果两个网页从相同的注册域名(例如,wikipedia.org)和方案(例如,https)起源,则认为它们属于同一网站。这与同源策略相似,但会忽略子域名。例如,https://en.wikipedia.org/https://de.wikipedia.org/都将属于同一网站。

网站实例是同一网站所属网页集合。当应用程序明确地将URL加载到Qt WebEngine(例如,通过QWebEnginePage::setUrl)时,会为页面创建一个新的网站实例。然而,当用户在页面上的同网站链接上单击时,现有的网站实例仅仅通过更多页面进行了扩展。

例如,在Simple Browser示例中,当用户打开两个标签页并将https://en.wikipedia.org/明确输入到URL栏时,两个标签页将各自拥有自己的OS进程(因为明确输入一个URL会创建一个新的网站实例)。然而,当用户然后中击同网站链接以打开更多标签页时,这些新标签页将共享同一个OS进程(因为用户交互扩展了现有的网站实例)。

按每个网站进程

将来自不同网站的页面放入不同的进程。与按每个网站实例的进程不同,对同一网站的访问都会共享一个OS进程。

此模型的好处是减少了内存消耗,因为更多的网页会共享进程。缺点包括降低安全性和响应能力。

要启用此模型,请使用命令行参数--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(这意味着结果将取决于已安装的操作系统词典)

因此,在 macOS Hunspell 的情况下,Qt WebEngine 将在应用程序包中的 qtwebengine_dictionaries 子目录和 Qt 框架包中的 Resources 目录中查找拼写检查数据。

总结一下,在使用 Hunspell 的情况下,将考虑以下路径

默认情况下禁用拼写检查,可以通过在基于小部件的应用程序中使用 QWebEngineProfile::setSpellCheckEnabled() 方法或在使用 Qt Quick 应用程序时,使用 WebEngineProfile.spellCheckEnabled 属性来按配置文件启用检查。

每个配置文件定义的当前拼写检查语言可以使用 QWebEngineProfile::setSpellCheckLanguages() 方法或 WebEngineProfile.spellCheckLanguages 属性来设置。

可以通过构建和运行 Spellchecker Example 来测试此功能。

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 对象中)。触摸事件仍然会被发送到网页上。
  • 通过在 QObject::installEventFilter 上使用 WebEngine 视图焦点代理对象,并过滤掉所有触摸事件,来安装一个事件过滤器对象。

查看源代码

Qt WebEngine 支持查看网页的 HTML 源代码。

此功能可以从自定义菜单中使用或分配给自定义事件。更多信息请参阅 WebEngineView::WebActionQWebEnginePage::WebAction

您可以通过在 Simple BrowserNano Browser 中打开网页,并在上下文菜单中选择 页面源代码 来测试此功能。这将在新标签页中打开源代码视图。

支持使用 view-source URI scheme 在当前标签页中打开源代码视图。例如,您可以在地址栏中输入以下 URL 来查看 qt.io 网页的 HTML 源代码

view-source:https://www.qt.io/

使用 view-source URI scheme 自动完成未完整的 URL 使得此功能更易使用。例如,以下未完成的 URL 也会加载 qt.io 网页的源代码视图

view-source:qt.io

该功能自 Qt 5.8.0 以来已提供支持。

Web 通知

Qt WebEngine 支持 JavaScript Web 通知 API。应用程序必须通过使用 QWebEnginePage::NotificationsWebEngineView.Notifications 明确允许此功能。

该功能支持添加到Qt 5.13.0。

WebGL

Qt WebEngine 支持某些图形堆栈设置下的 WebGL。用户可以使用由 QtWebEngine 驱动的应用程序访问 chrome://gpu 页面。《图形功能状态》概览表明当前平台设置是否支持 WebGL。用户还可以查看 WebGL 报告

WebGL 支持 默认启用。您可以使用 QWebEngineSettings::WebGLEnabled 设置禁用它。

WebRTC

WebRTC 通过简单的 API 为浏览器提供实时通信 (RTC) 功能。更多信息,请参阅 WebEngineView.FeatureQWebEnginePage::Feature

您可以通过设置摄像头或麦克风,然后在 Simple BrowserNano Browser 中打开 https://test.webrtc.org/ 来测试此功能。

© 2024 The Qt Company Ltd. 本文档中的贡献属于其各自的所有者。本提供的文档根据自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款进行许可。Qt 及相关标志是 The Qt Company Ltd. 在芬兰和其他国家/地区的商标。所有其他商标均为其各自所有者的财产。