QWebEngineView Class
QWebEngineView 类提供了一个用于查看和编辑网络文档的部件。更多
Header: | #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(QWebEnginePage *page, QWidget *parent = nullptr) |
(since 6.4) | QWebEngineView(QWebEngineProfile *profile, 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<void (const QByteArray &)> &resultCallback, const QPageLayout &layout = QPageLayout(QPageSize(QPageSize::A4), QPageLayout::Portrait, QMarginsF()), const QPageRanges &ranges = {}) |
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 | iconChanged(const QIcon &icon) |
void | iconUrlChanged(const QUrl &url) |
void | loadFinished(bool ok) |
void | loadProgress(int progress) |
void | loadStarted() |
(since 6.2) void | pdfPrintingFinished(const QString &filePath, bool success) |
(since 6.2) void | printFinished(bool success) |
(since 6.2) void | printRequested() |
(since 6.8) void | printRequestedByFrame(QWebEngineFrame frame) |
void | renderProcessTerminated(QWebEnginePage::RenderProcessTerminationStatus terminationStatus, int exitCode) |
void | selectionChanged() |
void | titleChanged(const QString &title) |
void | urlChanged(const QUrl &url) |
静态公共成员
(since 6.2) QWebEngineView * | forPage(const QWebEnginePage *page) |
受保护函数
virtual QWebEngineView * | createWindow(QWebEnginePage::WebWindowType type) |
重新实现的受保护函数
virtual void | closeEvent(QCloseEvent *event) override |
virtual void | contextMenuEvent(QContextMenuEvent *event) override |
virtual void | dragEnterEvent(QDragEnterEvent *e) override |
virtual void | dragLeaveEvent(QDragLeaveEvent *e) override |
virtual void | dragMoveEvent(QDragMoveEvent *e) override |
virtual void | dropEvent(QDropEvent *e) override |
virtual bool | event(QEvent *ev) override |
virtual void | hideEvent(QHideEvent *event) override |
virtual void | showEvent(QShowEvent *event) override |
详细说明
网页视图是Qt WebEngine 网页浏览模块的主要部件。它可用于各种应用程序,显示来自互联网的实时网页内容。
网站可以通过load() 函数加载到网络视图中。加载 URL 时始终使用 GET 方法。
与所有 Qt Widget 一样,必须调用show() 函数才能显示网页视图。下面的代码段说明了这一点:
QWebEngineView view; view.load(QUrl("https://qt-project.org/")); view.resize(1024, 750); view.show();
另外,setUrl() 也可用于加载网站。如果您有现成的 HTML 内容,可以使用setHtml() 代替。
loadStarted() 信号在视图开始加载时发出,而loadProgress() 信号则在网页视图的某个元素(如嵌入的图像或脚本)加载完成时发出。loadFinished() 信号会在视图完全加载完毕时发出。它的参数是true
或false
,表示加载成功还是失败。
page() 函数返回一个指向网页对象的指针。QWebEngineView 包含一个QWebEnginePage ,而 又允许访问页面上下文中的QWebEngineHistory 。
可以使用title() 属性访问 HTML 文档的标题。此外,网站还可指定一个图标,可使用icon() 或iconUrl() 属性访问其 URL。如果标题或图标发生变化,将发出相应的titleChanged(),iconChanged() 和iconUrlChanged() 信号。通过zoomFactor() 属性,可以按比例因子缩放网页内容。
该窗口小部件的上下文菜单是为手头的元素量身定制的,其中包括在浏览器中有用的操作。如需自定义上下文菜单或在菜单或工具栏中嵌入操作,可通过pageAction() 获取各个操作。网络视图会保持返回操作的状态,但允许修改操作属性,如text 或icon 。操作语义也可通过triggerPageAction() 直接触发。
如果要为允许用户打开新窗口(如弹出式窗口)的网站提供支持,可以子类化 QWebEngineView 并重新实现createWindow() 函数。
另请参阅《 WebEngine 小工具简单浏览器示例》和《WebEngine 内容操作示例》。
属性文档
[read-only]
hasSelection : const bool
此属性表示此页面是否包含所选内容。
默认情况下,此属性为false
。
访问功能:
bool | hasSelection() const |
另请参阅 selectionChanged() 。
[read-only]
icon : const QIcon
该属性包含与当前查看的页面相关联的图标。
默认情况下,该属性包含一个空图标。
访问功能:
QIcon | icon() const |
Notifier 信号:
void | iconChanged(const QIcon &icon) |
另请参阅 iconChanged(),iconUrl() 和iconUrlChanged()。
[read-only]
iconUrl : const QUrl
该属性包含与当前查看的页面相关联的图标的 URL。
默认情况下,该属性包含一个空 URL。
访问功能:
QUrl | iconUrl() const |
Notifier 信号:
void | iconUrlChanged(const QUrl &url) |
另请参阅 iconUrlChanged(),icon() 和iconChanged()。
[read-only]
selectedText : const QString
该属性用于保存当前选中的文本。
默认情况下,该属性包含一个空字符串。
访问函数:
QString | selectedText() const |
另请参阅 findText() 和selectionChanged()。
[read-only]
title : const QString
该属性包含 HTML<title>
元素定义的页面标题。
等同于QWebEnginePage::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) |
成员函数文档
[explicit]
QWebEngineView::QWebEngineView(QWidget *parent = nullptr)
用父parent 构建一个空的网络视图。
另请参阅 load() 。
[explicit, since 6.4]
QWebEngineView::QWebEngineView(QWebEnginePage *page, QWidget *parent = nullptr)
构造一个包含page 和父parent 的网络视图。
注意: page 的所有权并不属于调用者,调用者应确保其被删除。
此函数在 Qt 6.4 中引入。
[explicit, since 6.4]
QWebEngineView::QWebEngineView(QWebEngineProfile *profile, QWidget *parent = nullptr)
使用profile 与父parent 构建一个空网络视图。
注意: profile 对象的所有权不会被占用,它的寿命应超过视图的寿命。
此函数在 Qt 6.4 中引入。
另请参阅 load()。
[virtual noexcept]
QWebEngineView::~QWebEngineView()
销毁网页视图。
[slot]
void QWebEngineView::back()
在通过导航链接建立的文档列表中加载前一个文档的便利槽。如果没有前一个文档,则不执行任何操作。
它等同于
view->page()->triggerAction(QWebEnginePage::Back);
另请参阅 forward() 和pageAction()。
[override virtual protected]
void QWebEngineView::closeEvent(QCloseEvent *event)
重实现:QWidget::closeEvent(QCloseEvent *event).
[override virtual protected]
void QWebEngineView::contextMenuEvent(QContextMenuEvent *event)
重实现:QWidget::contextMenuEvent(QContextMenuEvent *event).
QMenu *QWebEngineView::createStandardContextMenu()
创建标准上下文菜单并返回指向该菜单的指针。
[virtual protected]
QWebEngineView *QWebEngineView::createWindow(QWebEnginePage::WebWindowType type)
每次页面要为给定的type 创建新窗口时,都会从相关QWebEnginePage 的createWindow() 方法中调用该函数。例如,当发出在新窗口中打开文档的 JavaScript 请求时。
注: 如果重新实现了关联页面的createWindow()
方法,则不会调用此方法,除非在重新实现时明确这样做。
另请参阅 QWebEnginePage::createWindow()。
[override virtual protected]
void QWebEngineView::dragEnterEvent(QDragEnterEvent *e)
重实现:QWidget::dragEnterEvent(QDragEnterEvent *event).
[override virtual protected]
void QWebEngineView::dragLeaveEvent(QDragLeaveEvent *e)
重实现:QWidget::dragLeaveEvent(QDragLeaveEvent *event).
[override virtual protected]
void QWebEngineView::dragMoveEvent(QDragMoveEvent *e)
重实现:QWidget::dragMoveEvent(QDragMoveEvent *event).
[override virtual protected]
void QWebEngineView::dropEvent(QDropEvent *e)
重实现:QWidget::dropEvent(QDropEvent *event).
[override virtual protected]
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()。
[static, since 6.2]
QWebEngineView *QWebEngineView::forPage(const QWebEnginePage *page)
返回与page 关联的视图(如有)。
此函数在 Qt 6.2 中引入。
[slot]
void QWebEngineView::forward()
便利槽,用于加载通过导航链接建立的文档列表中的下一个文档。如果没有下一个文档,则不执行任何操作。
它等同于
view->page()->triggerAction(QWebEnginePage::Forward);
另请参阅 back() 和pageAction()。
[override virtual protected]
void QWebEngineView::hideEvent(QHideEvent *event)
重实现:QWidget::hideEvent(QHideEvent *event).
QWebEngineHistory *QWebEngineView::history() const
返回视图历史导航网页的指针。
它等同于
view->page()->history();
[signal]
void QWebEngineView::iconChanged(const QIcon &icon)
当与视图关联的图标("favicon")发生变化时,将发出该信号。新图标由icon 指定。
注: 属性icon 的通知信号。
另请参阅 icon()、iconUrl() 和iconUrlChanged()。
[signal]
void QWebEngineView::iconUrlChanged(const QUrl &url)
当与视图关联的图标("favicon")的 URL 发生变化时,就会发出该信号。新 URL 由url 指定。
注: 属性iconUrl 的通知信号。
另请参阅 iconUrl()、icon() 和iconChanged()。
[since 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().
[signal]
void QWebEngineView::loadFinished(bool ok)
该信号在页面加载完成时发出。ok 将显示加载成功还是出错。
另请参见 loadStarted().
[signal]
void QWebEngineView::loadProgress(int progress)
每次网页视图中的元素(如嵌入式图像或脚本)加载完成时,都会发出该信号。因此,它可以跟踪网页视图的整体加载进度。
当前值由progress 提供,范围从 0 到 100,这是QProgressBar 的默认范围。
另请参阅 loadStarted() 和loadFinished()。
[signal]
void QWebEngineView::loadStarted()
该信号在开始加载新页面时发出。
另请参阅 loadProgress() 和loadFinished()。
QWebEnginePage *QWebEngineView::page() const
返回指向底层网页的指针。
另请参见 setPage()。
QAction *QWebEngineView::pageAction(QWebEnginePage::WebAction action) const
返回指向QAction 的指针,该指针封装了指定的网络操作action 。如果QAction 缺少默认样式图标,该函数也会将其设置为默认样式图标。
[signal, since 6.2]
void QWebEngineView::pdfPrintingFinished(const QString &filePath, bool success)
当将网页打印为 PDF 文件的过程结束时,将发出该信号。filePath 将包含请求创建文件的路径,如果文件创建成功,success 将为true
,否则为false
。
此函数在 Qt 6.2 中引入。
另请参阅 printToPdf()。
[since 6.2]
void QWebEngineView::print(QPrinter *printer)
将页面当前内容渲染为临时 PDF 文档,然后使用printer 打印。
创建和打印 PDF 文档的设置将从printer 对象中获取。
完成后,将发出printFinished() 信号,成功则表示true
,失败则表示false
。
用户有责任确保printer 在printFinished() 发送之前一直有效。
注意: 打印在浏览器进程中运行,默认情况下该进程不在沙盒中。
注意: 打印的数据生成步骤可通过QWebEnginePage::Stop 网页操作短时间中断。
注意: 该函数在将结果渲染到printer 时会对结果进行光栅化处理。请考虑将printer 的默认分辨率至少提高到 300 DPI,或使用printToPdf() 更有效地生成 PDF 文件输出。
此函数在 Qt 6.2 中引入。
[signal, since 6.2]
void QWebEngineView::printFinished(bool success)
当使用print() 请求的打印完成时,将发出该信号。成功时,参数success 为true
;失败时,参数false
。
此函数在 Qt 6.2 中引入。
另请参阅 print()。
[signal, since 6.2]
void QWebEngineView::printRequested()
当调用 JavaScriptwindow.print()
方法或用户按下 PDF 阅读器插件的打印按钮时,就会发出该信号。通常,信号处理程序只需调用print() 即可。
自 6.8 版起,该信号只在主帧中发出,而不是在任何请求打印的帧中发出。
该函数在 Qt 6.2 中引入。
另请参阅 printRequestedByFrame() 和print()。
[signal, since 6.8]
void QWebEngineView::printRequestedByFrame(QWebEngineFrame frame)
在frame 上调用 JavaScriptwindow.print()
方法时,会发出该信号。如果该帧是主帧,则会发出printRequested
。
此函数在 Qt 6.8 中引入。
另请参阅 printRequested() 和print()。
[since 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 的常量引用作为参数。如果打印成功,该字节数组将包含 PDF 数据,否则该字节数组将为空。
警告: 我们保证回调 (resultCallback) 始终会被调用,但它可能会在页面销毁时被调用。当QWebEnginePage 被删除时,回调将以无效值触发,在其中使用相应的QWebEnginePage 或QWebEngineView 实例是不安全的。
此函数在 Qt 6.2 中引入。
[slot]
void QWebEngineView::reload()
重新读取当前文件。
另请参阅 stop()、pageAction() 和loadStarted()。
[signal]
void QWebEngineView::renderProcessTerminated(QWebEnginePage::RenderProcessTerminationStatus terminationStatus, int exitCode)
terminationStatus 是进程的终止状态,exitCode 是进程终止时的状态代码。
[signal]
void QWebEngineView::selectionChanged()
每当选择内容发生变化时,就会发出该信号。
注意: 当使用鼠标左键单击并拖动来选择文本时,每选择一个新字符就会发出一个信号,而不是在松开鼠标左键时发出。
另请参阅 selectedText().
void QWebEngineView::setContent(const QByteArray &data, const QString &mimeType = QString(), const QUrl &baseUrl = QUrl())
将网页视图的内容设置为data 。如果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,如引用的图像或样式表。例如,如果 是通过 (基本 URL)获取的,那么使用相对 URL 引用的图像应位于 。html http://www.example.com/documents/overview.html
diagram.png
http://www.example.com/documents/diagram.png
HTML 文档是立即加载的,而外部对象则是异步加载的。
使用这种方法时,除非另有说明,否则Qt WebEngine 假定外部资源(如 JavaScript 程序或样式表)是以 UTF-8 编码的。例如,可以通过 HTML 脚本标记的charset
属性指定外部脚本的编码。另外,编码也可以由网络服务器指定。
这是一个相当于setContent(html, "text/html;charset=UTF-8", baseUrl)
的方便函数。
警告: 此函数仅适用于 HTML。对于其他 MIME 类型(如 XHTML 或 SVG),应使用setContent() 代替。
注意: 无法显示大于 2 MB 的内容,因为 setHtml() 会将提供的 HTML 转换为百分数编码,并在前面加上data
: 以创建导航到的 URL。这样,所提供的代码就变成了一个超过 Chromium 规定的 2 MB 限制的 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();
[override virtual protected]
void QWebEngineView::showEvent(QShowEvent *event)
重实现:QWidget::showEvent(QShowEvent *event).
[override virtual]
QSize QWebEngineView::sizeHint() const
重构属性访问函数:QWidget::sizeHint 。
[slot]
void QWebEngineView::stop()
方便停止加载文档的插槽。
它等同于
view->page()->triggerAction(QWebEnginePage::Stop);
另请参阅 reload()、pageAction() 和loadFinished()。
[signal]
void QWebEngineView::titleChanged(const QString &title)
每当视图的title 发生变化时,就会发出该信号。
另请参见 title().
void QWebEngineView::triggerPageAction(QWebEnginePage::WebAction action, bool checked = false)
触发指定的action 。如果是可选中操作,则假定指定的checked 状态。
下面的示例触发了复制操作,因此会将任何选中的文本复制到剪贴板。
view->triggerPageAction(QWebEnginePage::Copy);
另请参阅 pageAction().
[signal]
void QWebEngineView::urlChanged(const QUrl &url)
当视图的url 发生变化时会发出该信号。
© 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.