QWebEngineView 类

QWebEngineView 类提供了一个用于查看和编辑 Web 文档的小部件。 更多...

头文件 #include <QWebEngineView>
CMakefind_package(Qt6 REQUIRED COMPONENTS WebEngineWidgets)
target_link_libraries(mytarget PRIVATE Qt6::WebEngineWidgets)
qmakeQT += 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()
voidfindText(const QString &subString, QWebEnginePage::FindFlags options = {}, const std::function<void (const QWebEngineFindTextResult &)> &resultCallback = std::function<void(const QWebEngineFindTextResult &)>())
boolhasSelection() const
QWebEngineHistory *history() const
QIconicon() const
QUrliconUrl() const
(since 6.2) QWebEngineContextMenuRequest *lastContextMenuRequest() const
voidload(const QUrl &url)
voidload(const QWebEngineHttpRequest &request)
QWebEnginePage *page() const
QAction *pageAction(QWebEnginePage::WebAction action) const
(since 6.2) voidprint(QPrinter *printer)
(since 6.2) voidprintToPdf(const QString &filePath, const QPageLayout &layout = QPageLayout(QPageSize(QPageSize::A4), QPageLayout::Portrait, QMarginsF()), const QPageRanges &ranges = {})
(since 6.2) voidprintToPdf(const std::function &resultCallback, const QPageLayout &layout = QPageLayout(QPageSize(QPageSize::A4), QPageLayout::Portrait, QMarginsF()), const QPageRanges &ranges = {})
QStringselectedText() const
voidsetContent(const QByteArray &data, const QString &mimeType = QString(), const QUrl &baseUrl = QUrl())
voidsetHtml(const QString &html, const QUrl &baseUrl = QUrl())
voidsetPage(QWebEnginePage *page)
voidsetUrl(const QUrl &url)
voidsetZoomFactor(qreal factor)
QWebEngineSettings *settings() const
QStringtitle() const
voidtriggerPageAction(QWebEnginePage::WebAction action, bool checked = false)
QUrlurl() const
qrealzoomFactor() const

重实现的公共函数

virtual QSizesizeHint() const override

公共槽

void后退()
void前进()
void重新加载()
void停止()

信号

void图标改变(const QIcon &icon)
void图标URL改变(const QUrl &url)
void加载完成(bool ok)
void加载进度(int progress)
void加载开始()
(since 6.2) voidPDF打印完成(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)
voidURL改变(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() 信号。其参数为 truefalse,表示加载是成功还是失败。

page() 函数返回一个指向 网页 对象的指针。QWebEngineView 包含一个 QWebEnginePage,这允许访问页面上下文中的 QWebEngineHistory

可以使用 title() 属性访问 HTML 文档的标题。此外,网站可以指定一个图标,可以使用 icon() 或使用 iconUrl() 属性通过其 URL 访问。如果标题或图标发生变化,将发出相应的 titleChanged()、iconChanged() 和 iconUrlChanged() 信号。zoomFactor() 属性可以通过一个比例因子放大网页内容。

控件具有一个针对当前元素定制的上下文菜单,其中包括在浏览器中常用的操作。对于自定义上下文菜单或嵌入菜单或工具栏中的操作,可以通过 pageAction() 获取单个操作。web view 会维护返回的操作的状态,但允许修改动作属性,如 texticon。也可以直接通过 triggerPageAction() 触发动作语义。

如果您想为允许用户打开新窗口的网站提供支持,例如弹出窗口,您可以继承 QWebEngineView 并重新实现 createWindow() 函数。

另请参阅WebEngine Widgets Simple Browser 示例WebEngine 内容操作示例

属性文档

[只读] hasSelection : const bool

此属性表示此网页是否包含选定的内容。

默认情况下,此属性为 false

访问函数

boolhasSelection() const

另请参阅selectionChanged

[只读] icon : const QIcon

此属性保存与当前查看的页面关联的图标。

默认情况下,此属性包含一个空图标。

访问函数

QIconicon() const

通知信号

voidiconChanged(const QIcon &icon)

另请参阅 iconChanged(),iconUrl() 和 iconUrlChanged().

[只读] iconUrl : const QUrl

此属性包含当前查看的页面相关联图标的URL。

默认情况下,此属性包含一个空URL。

访问函数

QUrliconUrl() const

通知信号

voidiconUrlChanged(const QUrl &url)

另请参阅 iconUrlChanged(),icon() 和 iconChanged

[只读] selectedText : const QString

此属性包含当前选中的文本。

默认情况下,此属性包含一个空字符串。

访问函数

QStringselectedText() const

另请参阅 findText() 和 selectionChanged

[只读] title : const QString

此属性包含由HTML <title>元素定义的页面标题。

等同于 QWebEnginePage::title

访问函数

QStringtitle() const

另请参阅 titleChanged

url : QUrl

此属性包含当前查看的网页的URL。

设置此属性将清除视图并加载URL。

默认情况下,此属性包含一个空且无效的URL。

访问函数

QUrlurl() const
voidsetUrl(const QUrl &url)

另请参阅 load() 和 urlChanged

zoomFactor : qreal

此属性包含视图的缩放因子。

有效值介于 0.255.0 之间。默认因子为 1.0

访问函数

qrealzoomFactor() const
voidsetZoomFactor(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)

构建包含父 parentpage 的网页视图。

注意: page 的所有权未被接收,由调用者负责确保其被删除。

此功能自Qt 6.4起介绍。

另请参阅 load() 和 setPage()。

[虚函数 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 的新窗口时,都会从关联的 QWebEnginePagecreateWindow() 方法调用此函数。例如,当通过 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被删除时,回调将触发一个非法值,并且在该页面内的对应QWebEnginePageQWebEngineView实例中不应使用它。

另请参阅:selectedText()和selectionChanged

[静态,自6.2以来] QWebEngineView *QWebEngineView::forPage(const QWebEnginePage *page)

返回与page关联的视图(如果有)。

此函数是在Qt 6.2中引入的。

另请参阅:page()和setPage

[槽函数] 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将根据文件是否成功创建返回truefalse

此函数是在Qt 6.2中引入的。

另请参阅 printToPdf

[自6.2版本开始] void QWebEngineView::print(QPrinter *printer)

将页面当前内容渲染到临时PDF文档中,然后使用printer打印。

创建和打印PDF文档的设置将从printer对象中检索。

完成后,将发出信号printFinished(),对于成功或失败分别带有truefalse

用户负责确保在发出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被删除时,回调将触发一个非法值,并且在该页面内的对应QWebEnginePageQWebEngineView实例中不应使用它。

此函数是在Qt 6.2中引入的。

[槽函数] void QWebEngineView::reload()

重新加载当前文档。

另请参阅stoppageActionloadStarted

[信号] 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发生变化时,发出此信号。

另见 url()以及load()。

© 2024 Qt公司。本说明书中的文档贡献版权属于各自的所有者。本说明书基于自由软件基金会发布的GNU自由文档许可证版本1.3的条款进行许可。Qt及其相应的商标是芬兰Qt公司在全球的商标。所有其他商标均为其各自所有者的财产。