QtWebEngine Widget各部分详述

QtWebEngine

一、架构

1.1 模块

Qt WebEngine中的功能分为以下模块:

模块功能
Qt WebEngine Widgets C++ Classes提供用于在基于 QWidget 的应用程序中呈现 Web 内容的C++类。
Qt WebEngine QML Types提供 QML 类型,用于在 QML 应用程序中呈现 Web 内容。
Qt WebEngine Widgets C++ Classes提供用于在基于 QWidget 的应用程序中呈现 Web 内容的C++类。

1.2 小组件

这里记录的是Qt WebEngine Widgets C++ Classes
这是官方的一个自上而下的架构图片
在这里插入图片描述
所有页面都属于包含共享设置、脚本和 Cookie 的 Web 引擎配置文件。

1.3 类概述

功能
QtWebEngineView提供了一个用于查看和编辑 Web 文档的小部件
QWebEnginePageQWebEnginePage
QWebEngineHistory表示 Web 引擎页历史记录
QWebEngineHistoryItem表示 Web 引擎页历史记录中的一个项目
QWebEngineProfile由多个页面共享的 Web 引擎配置文件
QWebEngineSettings用于存储 QWebEnginePage 使用的设置的对象
QWebEngineScript封装一个 JavaScript 程序
QWebEngineCertificateError有关证书错误的信息
QWebEngineClientCertificateSelection客户端证书选择
QWebEngineClientCertSelection类包装客户端证书选择
QWebEngineContextMenuData用于使用操作填充或扩展上下文菜单的上下文数据
QWebEngineDownloadItem有关下载的信息
QWebEngineFullScreenRequest允许接受或拒绝进入和退出全屏模式的请求
QWebEngineScriptCollection表示用户脚本的集合

二、类

2.1 QWebEngineView

2.1.1 例

此类用于基础的显示页面
一个常见的加载页面的例子:

QWebEngineView *view = new QWebEngineView(parent);
view->load(QUrl("https://www.csdn.net/"));
view->show();

运行后即显示加载的页面
在这里插入图片描述

2.1.2 常用函数

*①QMenu QWebEngineView::createStandardContextMenu ()
创建标准上下文菜单并返回指向该菜单的指针。

②[virtual protected] QWebEngineView QWebEngineView::createWindow ( QWebEnginePage::WebWindowType type )*
当从QWebEnginePage 中希望创建新窗口时根据Page类返回的类型调用该函数 。
在使用QWebEngineView 加载一个页面时,我们会发现点击页面上的超链接不起作用,此时我们可以重写createWindow函数来使其跳转:

QWebEngineView* QWebEngineViewChw::createWindow(QWebEnginePage::WebWindowType type)
{
    //加载链接地址
    if (!m_url.isEmpty())
    {
        this->load(m_url);
    }
    return nullptr;
}

更细致一些,我们需要根据type的类型来操作

    switch (type) {
    case QWebEnginePage::WebBrowserTab: {
      //TODO
    }
    case QWebEnginePage::WebBrowserBackgroundTab: {
       //TODO  
    }
    case QWebEnginePage::WebBrowserWindow: {
       //TODO
    }
    case QWebEnginePage::WebDialog: {
      //TODO  
    }

③void QWebEngineView:: findText (const QString & subString , QWebEnginePage::FindFlags options = {}, const std::function < void (const QWebEngineFindTextResult &)> & resultCallback = …)
查找指定字符串。要清除选定,只需传递空字符串。
可用于实现按下“Ctrl+F”来查找输入的字符串

*④[static, since 6.2] QWebEngineView QWebEngineView:: forPage (const QWebEnginePage * page )
返回与page有关联的视图

该函数在 Qt 6.2 引入。
*⑤QWebEngineHistory QWebEngineView:: history () const
返回指向导航网页的视图历史的指针。

相当于:

view->page()->history();

⑥void QWebEngineView:: load (const QUrl & url )
加载指定 url 并显示它。

注意:直到达成足够数据才显示新 URL。在使用时可能会遇页面一直白屏,等待一段时间后突然加载出来的现象。
使用该函数可以直接加载指定的url,通常会配合UrlChange()信号使用。鼠标点击超链接->发送UrlChange信号->槽函数调用load加载UrlChange()传递的Url。

⑦[since 5.9] void QWebEngineView:: load (const QWebEngineHttpRequest & request )
发出指定 request 并加载响应。

该函数在 Qt 5.9 引入。
⑧QUrl Url()const
返回当前加载的url
⑨void setUrl (const QUrl & url )
加载 URL。
*⑩QWebEnginePage QWebEngineView:: page () const
返回指向底层 Web 页面的指针。
*⑩① QAction QWebEngineView:: pageAction ( QWebEnginePage::WebAction action ) const
返回指针指向 QAction 封装指定的 Web 动作 action .
⑩②[since 6.2] void QWebEngineView:: print ( QPrinter * printer )
将页面的当前内容呈现为临时 PDF 文档,然后使用打印机 进行打印。
用于创建和打印PDF文档的设置将从打印机 对象中检索。
完成后将发送printFinished ()信号 ,成功或失败将返回:true/falsex需要保证在发送rintFinished () 前打印机都是可用的。
注意: 打印在浏览器进程上运行,默认情况下,该进程未进行沙盒处理。
注意: 此函数渲染到打印机时有栅格化的效果,请将打印机的默认分辨率提高到至少 300 DPI 或使用 printToPdf () 更有效地生成 PDF 文件输出。
该函数在 Qt 6.2 引入。
⑩③[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文档的页面大小和方向取自布局 中指定的值,而打印的页面范围取自范围,默认为打印所有页面。
此方法发出将网页打印为 PDF 的异步请求,并立即返回。要获得有关请求结果的通知,请连接到信号 pdf打印已完成 ()。
如果提供的文件路径中已存在某个文件,则该文件将被覆盖。
该函数在 Qt 6.2 引入。
⑩④[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文档的页面大小和方向取自布局 中指定的值,而打印的页面范围取自范围,默认为打印所有页面。
resultCallback 必须将对 QByteArray 的 const 引用作为参数。如果打印成功,则此字节数组将包含 PDF 数据,否则,该字节数组将为空。
警告: 我们保证回调 ( resultCallback ) 总是被调用,但它可能在页面销毁期间完成。当 QWebEnginePage 被删除,会采用无效值触发回调
该函数在 Qt 6.2 引入
⑩⑤void QWebEngineView:: setContent (const QByteArray & data , const QString & mimeType = QString(), const QUrl & baseUrl = QUrl())
把 Web 视图内容设为 data 。若 mimeType 自变量为空,默认内容为 . text/plain,charset=US-ASCII
内容中引用的外部对象的定位相对于 baseUrl 。对于要加载外部对象, 不可以为空。 baseUrl
数据被立即加载;外部对象被异步加载。
⑩⑥void QWebEngineView:: setHtml (const QString & html , const QUrl & baseUrl = QUrl())
将 Web 视图内容设为指定 html 内容。
外部对象 (譬如:HTML 文档引用的样式表或图像) 的定位相对于 baseUrl 。对于要加载外部对象, 不可以为空。例如,若 html 检索自 ,其是基 URL,然后相对 URL 引用图像, 例如 : baseUrl http://www.example.com/documents/overview.html diagram.png http://www.example.com/documents/diagram.png
HTML 文档立即加载,而外部对象异步加载。
当使用此方法时,Qt WebEngine 假定外部资源 (譬如 JavaScript 程序或样式表) 是以 UTF-8 编码的,除非另有指定。例如,可以指定外部脚本的编码透过 属性在 HTML 脚本标签。另外,可以通过 Web 服务器指定编码。 charset
此方便函数相当于 . setContent(html, "text/html;charset=UTF-8", baseUrl)
警告: 此函数只适用于 HTML。对于其它 MIME 类型 (譬如 XHTML 或 SVG), setContent () 应该使用以取而代之。
注意: 大于 2 MB 的内容无法显示,因为 setHtml() 将转换提供的 HTML 为百分比编码并放置 :在它之前创建导航 URL。由此,提供的代码变为超过 Chromium 设置的 2 MB 限制的 URL。若内容太大, loadFinished () 信号被触发采用 . data success=false

To Be Continue……

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值