QWebEngineView 类
QWebEngineView 类提供了一个用于查看和编辑 Web 文档的小部件。 更多...
头文件 | #include <QWebEngineView> |
CMake | find_package(Qt6 REQUIRED COMPONENTS WebEngineWidgets) target_link_libraries(mytarget PRIVATE Qt6::WebEngineWidgets) |
qmake | QT += webenginewidgets |
继承自 | QWidget |
属性
|
|
公共函数
QWebEngineView(QWidget *parent = nullptr) | |
(since 6.4) | QWebEngineView(QWebEngineProfile *profile, QWidget *parent = nullptr) |
(since 6.4) | QWebEngineView(QWebEnginePage *page, QWidget *parent = nullptr) |
virtual | ~QWebEngineView() |
QMenu * | createStandardContextMenu() |
void | findText(const QString &subString, QWebEnginePage::FindFlags options = {}, const std::function<void (const QWebEngineFindTextResult &)> &resultCallback = std::function<void(const QWebEngineFindTextResult &)>()) |
bool | hasSelection() const |
QWebEngineHistory * | history() const |
QIcon | icon() const |
QUrl | iconUrl() const |
(since 6.2) QWebEngineContextMenuRequest * | lastContextMenuRequest() const |
void | load(const QUrl &url) |
void | load(const QWebEngineHttpRequest &request) |
QWebEnginePage * | page() const |
QAction * | pageAction(QWebEnginePage::WebAction action) const |
(since 6.2) void | print(QPrinter *printer) |
(since 6.2) void | printToPdf(const QString &filePath, const QPageLayout &layout = QPageLayout(QPageSize(QPageSize::A4), QPageLayout::Portrait, QMarginsF()), const QPageRanges &ranges = {}) |
(since 6.2) void | printToPdf(const std::function |
QString | selectedText() const |
void | setContent(const QByteArray &data, const QString &mimeType = QString(), const QUrl &baseUrl = QUrl()) |
void | setHtml(const QString &html, const QUrl &baseUrl = QUrl()) |
void | setPage(QWebEnginePage *page) |
void | setUrl(const QUrl &url) |
void | setZoomFactor(qreal factor) |
QWebEngineSettings * | settings() const |
QString | title() const |
void | triggerPageAction(QWebEnginePage::WebAction action, bool checked = false) |
QUrl | url() const |
qreal | zoomFactor() const |
重实现的公共函数
virtual QSize | sizeHint() const override |
公共槽
信号
void | 图标改变(const QIcon &icon) |
void | 图标URL改变(const QUrl &url) |
void | 加载完成(bool ok) |
void | 加载进度(int progress) |
void | 加载开始() |
(since 6.2) void | PDF打印完成(const QString &filePath, bool success) |
(since 6.2) void | 打印完成(bool success) |
(since 6.2) void | 打印请求() |
void | 渲染进程终止(QWebEnginePage::RenderProcessTerminationStatus terminationStatus, int exitCode) |
void | 选择内容改变() |
void | 标题改变(const QString &title) |
void | URL改变(const QUrl &url) |
静态公共成员
(自 6.2以来) QWebEngineView * | forPage(const QWebEnginePage *page) |
保护函数
virtual QWebEngineView * | 创建窗口(QWebEnginePage::WebWindowType type) |
重实现的保护函数
virtual void | 关闭事件(QCloseEvent *event) override |
virtual void | 上下文菜单事件(QContextMenuEvent *event) override |
virtual void | 拖入事件(QDragEnterEvent *e) override |
virtual void | 拖出事件(QDragLeaveEvent *e) override |
virtual void | 拖动事件(QDragMoveEvent *e) override |
virtual void | 放下事件(QDropEvent *e) override |
virtual bool | 事件(QEvent *ev) override |
virtual void | 隐藏事件(QHideEvent *event) override |
virtual void | 显示事件(QShowEvent *event) override |
详细信息
WebView是Qt WebEngine网络浏览模块的主要小部件组件。可以用于各种应用程序,以实时从互联网显示网络内容。
可以使用 load() 函数将一个 网站 加载到 web view 中。总是使用 GET 方法加载 URL。
与所有 Qt 小控件一样,必须调用 show() 函数以显示 web view。下面的代码示例说明了这一点
QWebEngineView view; view.load(QUrl("https://qt-project.org/")); view.resize(1024, 750); view.show();
或者,可以使用 setUrl() 来加载一个网站。如果您已有 HTML 内容,则可以使用 setHtml() 来代替。
当视图开始加载时,会发出 loadStarted() 信号;每当 web view 的某个元素(如嵌入式图片或脚本)加载完成时,会发出 loadProgress() 信号。当视图完全加载时,会发出 loadFinished() 信号。其参数为 true
或 false
,表示加载是成功还是失败。
page() 函数返回一个指向 网页 对象的指针。QWebEngineView 包含一个 QWebEnginePage,这允许访问页面上下文中的 QWebEngineHistory。
可以使用 title() 属性访问 HTML 文档的标题。此外,网站可以指定一个图标,可以使用 icon() 或使用 iconUrl() 属性通过其 URL 访问。如果标题或图标发生变化,将发出相应的 titleChanged()、iconChanged() 和 iconUrlChanged() 信号。zoomFactor() 属性可以通过一个比例因子放大网页内容。
控件具有一个针对当前元素定制的上下文菜单,其中包括在浏览器中常用的操作。对于自定义上下文菜单或嵌入菜单或工具栏中的操作,可以通过 pageAction() 获取单个操作。web view 会维护返回的操作的状态,但允许修改动作属性,如 text 或 icon。也可以直接通过 triggerPageAction() 触发动作语义。
如果您想为允许用户打开新窗口的网站提供支持,例如弹出窗口,您可以继承 QWebEngineView 并重新实现 createWindow() 函数。
另请参阅WebEngine Widgets Simple Browser 示例 和 WebEngine 内容操作示例。
属性文档
[只读]
hasSelection : const bool
此属性表示此网页是否包含选定的内容。
默认情况下,此属性为 false
。
访问函数
bool | hasSelection() const |
另请参阅selectionChanged。
[只读]
icon : const QIcon
此属性保存与当前查看的页面关联的图标。
默认情况下,此属性包含一个空图标。
访问函数
QIcon | icon() const |
通知信号
void | iconChanged(const QIcon &icon) |
另请参阅 iconChanged(),iconUrl() 和 iconUrlChanged().
[只读]
iconUrl : const QUrl
此属性包含当前查看的页面相关联图标的URL。
默认情况下,此属性包含一个空URL。
访问函数
QUrl | iconUrl() const |
通知信号
void | iconUrlChanged(const QUrl &url) |
另请参阅 iconUrlChanged(),icon() 和 iconChanged。
[只读]
selectedText : const QString
此属性包含当前选中的文本。
默认情况下,此属性包含一个空字符串。
访问函数
QString | selectedText() const |
另请参阅 findText() 和 selectionChanged。
[只读]
title : const QString
此属性包含由HTML <title>
元素定义的页面标题。
访问函数
QString | title() const |
另请参阅 titleChanged。
url : QUrl
此属性包含当前查看的网页的URL。
设置此属性将清除视图并加载URL。
默认情况下,此属性包含一个空且无效的URL。
访问函数
QUrl | url() const |
void | setUrl(const QUrl &url) |
另请参阅 load() 和 urlChanged。
zoomFactor : qreal
此属性包含视图的缩放因子。
有效值介于 0.25
到 5.0
之间。默认因子为 1.0
。
访问函数
qreal | zoomFactor() const |
void | setZoomFactor(qreal factor) |
成员函数文档
[显式]
QWebEngineView::QWebEngineView(QWidget *parent = nullptr)
构建一个空网页视图,父级为 parent。
另请参阅 load。
[显式,自6.4起]
QWebEngineView::QWebEngineView(QWebEngineProfile *profile, QWidget *parent = nullptr)
使用 profile 构建一个空网页视图,父级为 parent。
注意: profile 对象的所有权未转移,它应该比视图存在更长的时间。
此功能自Qt 6.4起介绍。
另请参阅 load。
[显式,自6.4起]
QWebEngineView::QWebEngineView(QWebEnginePage *page, QWidget *parent = nullptr)
构建包含父 parent 的 page 的网页视图。
注意: page 的所有权未被接收,由调用者负责确保其被删除。
此功能自Qt 6.4起介绍。
[虚函数 noexcept]
QWebEngineView::~QWebEngineView()
销毁网页视图。
[槽函数]
void QWebEngineView::back()
这是一个方便的槽函数,用于加载由链接导航构建的文档列表中的上一个文档。如果没有上一个文档,则不做任何操作。
它与以下操作等价:
view->page()->triggerAction(QWebEnginePage::Back);
另请参阅 forward() 和 pageAction()。
[重载虚保护函数]
void QWebEngineView::closeEvent(QCloseEvent *event)
重新实现: QWidget::closeEvent(QCloseEvent *event)。
[重载虚保护函数]
void QWebEngineView::contextMenuEvent(QContextMenuEvent *event)
重新实现: QWidget::contextMenuEvent(QContextMenuEvent *event)。
QMenu *QWebEngineView::createStandardContextMenu()
创建一个标准上下文菜单,并返回其对指针。
[虚保护函数]
QWebEngineView *QWebEngineView::createWindow(QWebEnginePage::WebWindowType type)
每当要创建指定 type 的新窗口时,都会从关联的 QWebEnginePage 的 createWindow() 方法调用此函数。例如,当通过 JavaScript 请求在新窗口中打开文档时。
注意: 如果关联页的 createWindow()
方法被重写,则除非在重写中明确调用,否则不会调用此方法。
另请参阅 QWebEnginePage::createWindow()。
[重载虚保护函数]
void QWebEngineView::dragEnterEvent(QDragEnterEvent *e)
重新实现: QWidget::dragEnterEvent(QDragEnterEvent *event)。
[重载虚保护函数]
void QWebEngineView::dragLeaveEvent(QDragLeaveEvent *e)
重新实现: QWidget::dragLeaveEvent(QDragLeaveEvent *event)。
[重载虚保护函数]
void QWebEngineView::dragMoveEvent(QDragMoveEvent *e)
重新实现: QWidget::dragMoveEvent(QDragMoveEvent *event)。
[重写虚保护]
void QWebEngineView::dropEvent(QDropEvent *e)
重新实现了: QWidget::dropEvent(QDropEvent *event).
[重写虚保护]
bool QWebEngineView::event(QEvent *ev)
重新实现了: QWidget::event(QEvent *event).
void QWebEngineView::findText(const QString &subString, QWebEnginePage::FindFlags options = {}, const std::function<void (const QWebEngineFindTextResult &)> &resultCallback = std::function<void(const QWebEngineFindTextResult &)>())
使用给定的options在页面中查找指定的字符串subString。
要清除选择,只需传递一个空字符串。
resultCallback必须接受一个QWebEngineFindTextResult参数。
注意:我们保证回调(resultCallback)始终被调用,但它可能在页面销毁期间执行。当QWebEnginePage被删除时,回调将触发一个非法值,并且在该页面内的对应QWebEnginePage或QWebEngineView实例中不应使用它。
另请参阅:selectedText()和selectionChanged。
[静态,自6.2以来]
QWebEngineView *QWebEngineView::forPage(const QWebEnginePage *page)
返回与page关联的视图(如果有)。
此函数是在Qt 6.2中引入的。
[槽函数]
void QWebEngineView::forward()
这是一个方便的槽函数,用于加载由导航链接构建的文档列表中的下一个文档。如果没有下一个文档,则不执行任何操作。
它与以下操作等价:
view->page()->triggerAction(QWebEnginePage::Forward);
另请参阅:back()和pageAction。
[重写虚保护]
void QWebEngineView::hideEvent(QHideEvent *event)
重新实现了: QWidget::hideEvent(QHideEvent *event).
QWebEngineHistory *QWebEngineView::history() const
返回指向视图已导航的网页历史记录的指针。
它与以下操作等价:
view->page()->history();
[信号]
void QWebEngineView::iconChanged(const QIcon &icon)
当与视图关联的图标("favicon")改变时,发出此信号。新图标由icon指定。
注意:这是属性icon的通知信号。
另请参阅:icon(),iconUrl()和iconUrlChanged。
[信号]
void QWebEngineView::iconUrlChanged(const QUrl &url)
当与视图关联的图标(收藏夹图标)的URL发生变化时,会发出此信号。新URL由url指定。
注意:这是属性iconUrl的信号通知者。
另请参阅:iconUrl(), icon(), 和 iconChanged().
[自6.2起]
QWebEngineContextMenuRequest *QWebEngineView::lastContextMenuRequest() const
返回有关当前上下文菜单的附加数据。它在调用contextMenuEvent()期间有效。
此函数是在Qt 6.2中引入的。
另请参阅:createStandardContextMenu().
void QWebEngineView::load(const QUrl &url)
加载指定的url并将其显示。
注意:在加载新URL所需的数据到达之前,视图保持不变。
另请参阅:load(), setUrl(), url(), urlChanged(), 和 QUrl::fromUserInput().
void QWebEngineView::load(const QWebEngineHttpRequest &request)
发出指定的request并加载响应。
另请参阅:load(), setUrl(), url(), urlChanged(), 和 QUrl::fromUserInput().
[信号]
void QWebEngineView::loadFinished(bool ok)
当页面加载完成时,会发出此信号。ok将指示加载是否成功或发生错误。
另请参阅:loadStarted().
[信号]
void QWebEngineView::loadProgress(int progress)
每当WebView中的某个元素完成加载时(例如内嵌的图像或脚本),都会发出此信号。因此,它跟踪加载WebView的总进度。
当前值由progress提供,范围从0到100,这是QProgressBar的默认范围。
另请参阅:loadStarted() 和 loadFinished().
[信号]
void QWebEngineView::loadStarted()
当开始新的页面加载时,会发出此信号。
另请参阅:loadProgress() 和 loadFinished().
QWebEnginePage *QWebEngineView::page() const
返回底层网页的指针。
另请参阅:setPage().
QAction *QWebEngineView::pageAction(QWebEnginePage::WebAction action) const
返回指向一个封装了指定网页操作的QAction指针。如果QAction缺少图标,此函数还将其设置为默认样式图标。
[信号, 自6.2版本开始]
void QWebEngineView::pdfPrintingFinished(const QString &filePath, bool success)
当网页打印到PDF文件完成时发出此信号。filePath将包含请求创建文件的路径,而success将根据文件是否成功创建返回true
或false
。
此函数是在Qt 6.2中引入的。
另请参阅 printToPdf。
[自6.2版本开始]
void QWebEngineView::print(QPrinter *printer)
将页面当前内容渲染到临时PDF文档中,然后使用printer打印。
创建和打印PDF文档的设置将从printer对象中检索。
完成后,将发出信号printFinished(),对于成功或失败分别带有true
或false
。
用户负责确保在发出printFinished()之前printer保持有效。
注意:打印运行在浏览器进程中,默认情况下未沙箱化。
注意:可以在使用QWebEnginePage::Stop网页操作时暂时中断打印数据生成步骤。
注意:此函数在渲染到printer时将结果光栅化。请考虑将printer的默认分辨率提升到至少300 DPI或使用printToPdf()以更有效地生成PDF文件输出。
此函数是在Qt 6.2中引入的。
[信号, 自6.2版本开始]
void QWebEngineView::printFinished(bool success)
当调用print()请求打印完成时发出此信号。参数success对于成功返回true
或对于失败返回false
。
此函数是在Qt 6.2中引入的。
另请参阅 print。
[信号, 自6.2版本开始]
void QWebEngineView::printRequested()
当调用JavaScript window.print()
方法或用户按下PDF查看器插件的打印按钮时发出此信号。通常,信号处理程序可以简单地调用print()。
此函数是在Qt 6.2中引入的。
另请参阅 print。
[自6.2版本开始]
void QWebEngineView::printToPdf(const QString &filePath, const QPageLayout &layout = QPageLayout(QPageSize(QPageSize::A4), QPageLayout::Portrait, QMarginsF()), const QPageRanges &ranges = {})
将当前页面的内容渲染成PDF文档,并保存到filePath中指定的位置。生成的PDF文档的页面大小和方向取自于在layout中指定的值,而打印的页面范围取自于ranges,默认打印所有页面。
此方法异步请求数字打印网页到PDF,并立即返回。要了解请求的结果,请连接到信号pdfPrintingFinished。
如果提供的文件路径已存在文件,则该文件将被覆盖。
此函数是在Qt 6.2中引入的。
另请参阅pdfPrintingFinished。
[since 6.2]
void QWebEngineView::printToPdf(const std::function<void (const QByteArray &)> &resultCallback, const QPageLayout &layout = QPageLayout(QPageSize(QPageSize::A4), QPageLayout::Portrait, QMarginsF()), const QPageRanges &ranges = {})
将当前页面的内容渲染成PDF文档,并以字节形式返回 PDF 数据到resultCallback参数。生成的PDF文档的页面大小和方向取自于layout中指定的值,而打印的页面范围取自于ranges,默认打印所有页面。
resultCallback必须接受一个对QByteArray的const引用作为参数。如果打印成功,此字节数组将包含PDF数据,否则,字节数组将为空。
注意:我们保证回调(resultCallback)始终被调用,但它可能在页面销毁期间执行。当QWebEnginePage被删除时,回调将触发一个非法值,并且在该页面内的对应QWebEnginePage或QWebEngineView实例中不应使用它。
此函数是在Qt 6.2中引入的。
[槽函数]
void QWebEngineView::reload()
重新加载当前文档。
另请参阅stop、pageAction和loadStarted。
[信号]
void QWebEngineView::renderProcessTerminated(QWebEnginePage::RenderProcessTerminationStatus terminationStatus, int exitCode)
当渲染进程以非零退出状态终止时发出此信号。terminationStatus是进程的终止状态,exitCode是进程终止时的状态码。
[信号]
void QWebEngineView::selectionChanged()
每当选择发生更改时,都会发出此信号。
注意:使用鼠标通过左键单击和拖拽选择文本时,信号将在每个新选定的字符上发出,而不是在释放左鼠标按钮时。
另请参阅selectedText。
void QWebEngineView::setContent(const QByteArray &data, const QString &mimeType = QString(), const QUrl &baseUrl = QUrl())
将网页视图的内容设置为数据。如果mimeType参数为空,则假定内容为text/plain,charset=US-ASCII
。
内容中引用的外部对象位于baseUrl的相对位置。若要加载有相对URL的外部对象,baseUrl
不能为空。
数据立即加载;外部对象异步加载。
另请参阅load(),setHtml()和QWebEnginePage::toHtml()。
void QWebEngineView::setHtml(const QString &html, const QUrl &baseUrl = QUrl())
将网页视图的内容设置为指定的html内容。
baseUrl是可选的,用于解析文档中的相对URL,例如引用的图像或样式表。例如,如果html是从http://www.example.com/documents/overview.html
(基URL)检索到的,则使用相对URL引用的图像diagram.png
应位于http://www.example.com/documents/diagram.png
。
HTML文档立即加载,而外部对象异步加载。
在此方法中,除非指定否则,Qt WebEngine假定外部资源(例如JavaScript程序或样式表)使用UTF-8编码。例如,可以通过HTML script标签的charset
属性指定外部脚本的编码。或者,可以通过网页服务器指定编码。
这是一个等效于setContent(html, "text/html;charset=UTF-8", baseUrl)
的便捷函数。
警告:此函数仅适用于HTML。对于其他MIME类型(如XHTML或SVG),应使用setContent()代替。
注意:长度超过2MB的内容无法显示,因为setHtml()会将提供的HTML转换为百分数编码,并在其前面加上data
:来创建它导航到的URL。因此,提供的代码成为超过Chromium设定的2MB限制的URL。如果内容过长,loadFinished()信号将与success=false
触发。
另请参阅load(),setContent(),QWebEnginePage::toHtml(),和QWebEnginePage::setContent()。
void QWebEngineView::setPage(QWebEnginePage *page)
将page设置为网页视图的新网页。
提供的页面的父QObject仍然是对象的拥有者。如果当前页面是网页视图的子页面,则它将被删除。
另请参阅page()。
QWebEngineSettings *QWebEngineView::settings() const
返回对视图或页面特定设置对象的指针。
它与以下操作等价:
view->page()->settings();
[覆盖虚拟受保护]
void QWebEngineView::showEvent(QShowEvent *event)
重实现了:QWidget::showEvent(QShowEvent *event)。
[覆盖虚函数]
QSize QWebEngineView::sizeHint() const
重新实现属性访问函数:QWidget::sizeHint。
[槽函数]
void QWebEngineView::stop()
方便的槽函数,用于停止文档的加载。
它与以下操作等价:
view->page()->triggerAction(QWebEnginePage::Stop);
另见 reload(),pageAction(),以及 loadFinished()。
[信号]
void QWebEngineView::titleChanged(const QString &title)
每当视图的标题发生变化时,发出此信号。
另见 title()。
void QWebEngineView::triggerPageAction(QWebEnginePage::WebAction action, bool checked = false)
触发指定的操作。如果是可复选的操作,则假定指定的checked状态。
以下示例触发复制操作,因此将任何选定的文本复制到剪贴板。
view->triggerPageAction(QWebEnginePage::Copy);
另见 pageAction()。
[信号]
void QWebEngineView::urlChanged(const QUrl &url)
当视图的URL发生变化时,发出此信号。
© 2024 Qt公司。本说明书中的文档贡献版权属于各自的所有者。本说明书基于自由软件基金会发布的GNU自由文档许可证版本1.3的条款进行许可。Qt及其相应的商标是芬兰Qt公司在全球的商标。所有其他商标均为其各自所有者的财产。