QWebEngineView 类 详细使用说明

news2024/10/7 18:28:56

文章目录
一、前言
二、详述
三、属性
四、公共函数
五、重新实现的公共函数
六、公共槽函数
七、信号
八、保护函数
九、重新实现的受保护函数
10、总结
一、前言
原文链接

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

Header:    #include < QWebEngineView >
qmake:    QT += webenginewidgets
Since:    Qt 5.4
Inherits:    QWidget


二、详述
Web视图是Qt WebEngine Web浏览模块的主要窗口小部件组件。 可以在各种应用程序中使用它来实时显示Internet上的Web内容。

 

可以使用load()函数将网站加载到Web视图。 GET方法始终用于加载URL。

像所有Qt小部件一样,必须调用show()函数才能显示Web视图。 下面的代码段说明了这一点:

 

   QWebEngineView *view = new QWebEngineView(parent);
   view->load(QUrl("http://qt-project.org/"));
   view->show();


或者,可以使用setUrl()加载网站。如果您拥有随时可用的HTML内容,则可以使用setHtml()代替。

当视图开始加载时,将发出loadStarted()信号,并且每当Web视图的元素完成加载时,都会发出loadProgress()信号,例如嵌入式图像或脚本。完全加载视图后,将发出loadFinished()信号。它的参数true或false指示加载是成功还是失败。

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

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

该小部件具有适合于手边元素的上下文菜单,并包括在浏览器中有用的动作。对于自定义上下文菜单,或将动作嵌入菜单或工具栏中,可以通过pageAction()来使用各个动作。 Web视图维护返回的动作的状态,但允许修改动作属性,例如文本或图标。动作语义也可以通过triggerPageAction()直接触发。

如果要为允许用户打开新窗口(例如弹出窗口)的网站提供支持,则可以将QWebEngineView子类化并重新实现createWindow()函数。

另请参阅WebEngine窗口小部件简单浏览器示例,WebEngine内容操作示例和WebEngine Markdown编辑器示例。

三、属性
hasSelection: const bool
此属性保存此页面是否包含所选内容。默认情况下,此属性为false。
icon: const QIcon
此属性保存与当前查看的页面关联的图标。默认情况下,此属性包含一个空图标。
iconUrl: const QUrl
此属性保存与当前查看的页面关联的图标的URL。默认情况下,此属性包含一个空URL。
selectedText: const QString
此属性保存当前选定的文本。默认情况下,此属性包含一个空字符串。
title: const QString
此属性保存HTML < title >元素定义的页面标题。等效于QWebEnginePage :: title()。
url: QUrl
此属性保存当前查看的网页的URL。设置此属性将清除视图并加载URL。默认情况下,此属性包含一个空的无效URL。
zoomFactor:
qreal此属性保存视图的缩放系数。有效值范围是0.25到5.0。 默认因子是1.0。
四、公共函数
QWebEngineView(QWidget *parent = Q_NULLPTR)
构造函数

virtual ~QWebEngineView()
析构函数

void findText(const QString &subString, QWebEnginePage::FindFlags options = QWebEnginePage::FindFlags(),
const QWebEngineCallback< bool > &resultCallback = QWebEngineCallback< bool >() )
使用给定的选项在页面中查找指定的字符串subString。要清除选择,只需传递一个空字符串。
resultCallback必须采用布尔值参数。 如果找到subString,它将以true值调用; 否则,回调值将为false。
警告:我们保证始终会调用回调(resultCallback),但是可以在销毁页面期间完成。 删除QWebEnginePage时,将使用无效值触发回调,并且在其中使用相应的QWebEnginePage或QWebEngineView实例并不安全。
另请参见selectedText()和selectionChanged()。

bool hasSelection() const
是否有选择内容

QWebEngineHistory * history() const
返回指向导航网页视图历史的指针。
它等效于: view-> page()-> history();

QIcon icon() const
返回QIcon

QUrl iconUrl() const
返回icon的URL

void load(const QUrl &url)
加载并显示指定的URL。注意:在到达足够的数据以显示新URL之前,视图将保持不变。

void load(const QWebEngineHttpRequest &request)
发出指定的请求并加载响应。

QWebEnginePage * page() const
返回指向基础页面的指针。

QAction * pageAction(QWebEnginePage::WebAction action) const
返回封装的Web Action指针

QString selectedText() const
返回选择的内容的文本

void setContent(const QByteArray &data, const QString &mimeType = QString(), const QUrl &baseUrl = QUrl())
将Web视图的内容设置为数据。 如果mimeType参数为空,则假定内容为text / plain,charset = US-ASCII。

内容中引用的外部对象相对于baseUrl定位。 对于要加载的外部对象,baseUrl不能为空。

数据立即加载; 外部对象是异步加载的。

void setHtml(const QString &html, const QUrl &baseUrl = QUrl())
将Web视图的内容设置为指定的html内容。

外部对象(例如HTML文档中引用的样式表或图像)相对于baseUrl定位。对于要加载的外部对象,baseUrl不能为空。例如,如果从基本URL http://www.example.com/documents/overview.html检索html,则使用相对URL diagram.png引用的图像应位于http:// www.example.com/documents/diagram.png。

HTML文档将立即加载,而外部对象则异步加载。

使用此方法时,除非另有说明,否则Qt WebEngine假定外部资源(例如JavaScript程序或样式表)均以UTF-8编码。例如,可以通过HTML脚本标签的charset属性指定外部脚本的编码。或者,可以由Web服务器指定编码。

这是一个等效于setContent(html,“ text / html; charset = UTF-8”,baseUrl)的便利函数。

警告:此功能仅适用于HTML。对于其他MIME类型(例如XHTML或SVG),应改用setContent()。

注意:无法显示大于2 MB的内容,因为setHtml()会将提供的HTML转换为百分比编码并将数据:放在其前面以创建要导航到的URL。 从而,提供的代码将成为超出Chromium设置的2 MB限制的URL。 如果内容太大,则使用success = false触发loadFinished()信号。

void setPage(QWebEnginePage *page)
使页面成为Web视图的新网页。

提供的页面的父QObject仍然是对象的所有者。 如果当前页面是Web视图的子页面,则将其删除。

void setUrl(const QUrl &url)
设置此属性将清除视图并加载URL。

QUrl url() const
返回URL

void setZoomFactor(qreal factor)
设置缩放系数

qreal zoomFactor() const
返回缩放因子

QWebEngineSettings * settings() const
返回指向视图或页面特定设置对象的指针。
它等效于:
view-> page()-> settings();

QString title() const
等效于: QWebEnginePage::title().

void triggerPageAction(QWebEnginePage::WebAction action, bool checked = false)
触发指定的动作。 如果这是可检查的操作,则假定为指定的检查状态。
下面的示例触发复制操作,因此将所有选定的文本复制到剪贴板。
view-> triggerPageAction(QWebEnginePage :: Copy);
另请参见pageAction()。

五、重新实现的公共函数
   1. virtual QSize  **sizeHint**() const override
      重新实现属性的访问功能:QWidget :: sizeHint
1
2
六、公共槽函数
void back()
便捷插槽,用于通过导航链接构建的文档列表中的上一个文档。 如果没有以前的文档,则不执行任何操作。
它等效于:
view-> page()-> triggerAction(QWebEnginePage :: Back);
另请参见forward()和pageAction()。
void forward()
便捷插槽,用于通过导航链接构建的文档列表中的下个文档。 如果没有下个文档,则不执行任何操作。
它等效于:
view-> page()-> triggerAction(QWebEnginePage :: Forward);
另请参见back()和pageAction()。
void reload()
重新加载当前文档
void stop()方便插槽,可停止加载文档。
它等效于:
view-> page()-> triggerAction(QWebEnginePage :: Stop);
另请参见reload(),pageAction()和loadFinished()。
七、信号
void iconChanged(const QIcon &icon)
当与视图关联的图标(“favicon”)更改时,将发出此信号。
void iconUrlChanged(const QUrl &url)
当与视图关联的图标(“图标”)的URL更改时,将发出此信号。
void loadFinished(bool ok)
页面加载完成后发出此信号。 ok将指示加载成功还是发生错误。
void loadProgress(int progress)
每当Web视图中的某个元素完成加载(例如嵌入式图像或脚本)时,都会发出此信号。 因此,它跟踪加载Web视图的总体进度。
当前值由progress提供,并从0到100缩放,这是QProgressBar的默认范围。
void loadStarted()
当页面的新加载开始时,将发出此信号。
void renderProcessTerminated(QWebEnginePage::RenderProcessTerminationStatus terminationStatus, int exitCode)
当渲染过程以非零退出状态终止时,将发出此信号。 终止状态是进程的终止状态,而退出代码是进程终止的状态代码。
void selectionChanged()
选择更改时,将发出此信号。
注意:当使用鼠标通过左键单击和拖动来选择文本时,将为选定的每个新字符发出信号,而不是在释放鼠标左键时发出信号。
void titleChanged(const QString &title)
每当视图标题更改时,都会发出此信号。
void urlChanged(const QUrl &url)
视图的URL更改时,将发出此信号。
八、保护函数
virtual QWebEngineView *createWindow(QWebEnginePage::WebWindowType type)

每当QWebEnginePage页面想要创建给定类型的新窗口时,都会从关联的QWebEnginePage的createWindow()方法中调用此函数。 例如,当发出JavaScript请求以在新窗口中打开文档时。
注意:如果重新实现了关联页面的createWindow()方法,则不会调用此方法,除非在重新实现中明确地这样做。

九、重新实现的受保护函数
都是一些常规的函数,如果要自定义,就自己去子类化实现

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
10、总结
QWebEngineView 类从介绍来看,感觉并不难,如果实现一个简单的浏览器视图,应该不算太麻烦。下一章,先用QWebEngineView写一个简单的例子。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/365865.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Web安全-MSF记录篇章一】

文章目录前言msfvenom生成远控木马基本系统命令webcam 摄像头命令常用的信息收集脚本注册表设置nc后门开启 rdp&添加用户获取哈希mimikatz抓取密码前言 最近打站&#xff0c;可以感觉到之前的学的渗透知识忘记很多。。。。。多用多看多练&#xff0c;简单回顾一下 msfven…

2023年了,零基础小白转行IT学习Java还有前途吗?

“2023年了&#xff0c;转行IT学习Java是不是已经听过看过很多次了&#xff0c;Java从出现到现在有多少年了呢&#xff1f;掐指一算&#xff0c;Java是1995年由Sun公司推出的一款高级编程语言……距今已有28年了&#xff01; Sun公司都被收购了&#xff0c;莫不是Java也要垮台了…

Android实现Dribbble上动感的Gallery App Icon

先来看看原Dribbble上动感的Gallery App Icon效果图思路拆解一下&#xff0c;还是比较简单&#xff0c;需要绘制的有&#xff1a;圆形背景太阳(圆形)山(三角形)云朵(圆角矩形 三个圆)需要进行的动画&#xff1a;太阳 - 旋转动画山 - 上下平移动画云朵 - 左右平移动画不必绘制圆…

随想录二刷 (双指针法) leetcode 27 26 283 844

双指针法的原理 双指针法相对于暴力解法的优点有以下几点 暴力遍历的时间复杂度会比较高双指针法利用两个指针进行遍历完成双层循环所做的事情 双指针一般有两种方法 同向指针&#xff0c;双向指针 第一题 leetcode 27 移除元素 题目描述 题目分析 采用暴力遍历可以得出结…

vector的基本使用

目录 介绍&#xff1a; vector iterator 的使用 增删查改 增&#xff08;push_back insert&#xff09;&#xff1a; 删(pop_back erase)&#xff1a; swap&#xff1a; vector的容量和扩容&#xff1a; 排序&#xff08;sort&#xff09;&#xff1a; 介绍&#xff…

SpringBoot入门(二)

这里写目录标题一、SpringBoot整合Junit1.1 搭建SpringBoot工程1.2 引入starter-test起步依赖1.3 编写类1.4 测试二、SpringBoot整合mybatis2.1 搭建SpringBoot工程2.2 引入mybatis起步依赖&#xff0c;添加驱动2.3 编写DataSource和MyBatis相关配置2.4 定义表和实体类2.5 编写…

100%BIM学员的疑惑:不会CAD可以学Revit吗?

在新一轮科技创新和产业变革中&#xff0c;信息化与建筑业的融合发展已成为建筑业发展的方向&#xff0c;将对建筑业发展带来战略性和全局性的影响。 建筑业是传统产业&#xff0c;推动建筑业科技创新&#xff0c;加快推进信息化发展&#xff0c;激发创新活力&#xff0c;培育…

apk中代码执行adb指令实现

背景&#xff1a;想要在android apk中直接使用adb指令&#xff0c;从而不需要把手机通过数据线方式连接到电脑&#xff0c;在电脑端执行adb指令。 一、权限相关 想要在apk代码中执行adb命令&#xff0c;涉及到执行权限。 首先手机需要有root权限。其次就算手机已经root了&…

yolov5/6/7系列模型训练日志结果数据对比分析可视化

早在之前使用yolov3和yolov4这类项目的时候可视化分析大都是自己去做的&#xff0c;到了yolov5的时候&#xff0c;变成了一个工具包了&#xff0c;作者全部集成进去了&#xff0c;这里我们以一个具体的结果为例&#xff0c;如下&#xff1a;整个训练过程产生的指标等数据都会自…

11.3 基于Django4的可重用、用户注册和登录系统搭建(优化)

文章目录邮件注册发送邮件功能测试基本的邮件注册功能实现完成注册表单完成注册的业务逻辑密码加密功能实现邮件注册确认创建模型修改视图测试处理邮件确认请求修改登录规则测试邮件注册 根据官方文档进行&#xff1a;https://docs.djangoproject.com/zh-hans/4.1/topics/emai…

什么是智慧实验室?

智慧实验室是利用现代信息技术和先进设备将实验室实现智能化和智慧化的概念。通过将各种数据、信息和资源整合在一起&#xff0c;实现实验室设备的互联互通&#xff0c;数据的实时采集、传输、处理和分析&#xff0c;从而提高实验室的效率、精度和可靠性。一、智慧实验室包含多…

Java~对于代码块与内部类的理解

目录 代码块 普通代码块 构造代码块 静态代码块 内部类 成员内部类 普通内部类 静态内部类 局部内部类 代码块 使用“{}”定义的一段代码成为代码块&#xff0c;代码块分为普通代码块、构造代码块、匿名代码块、同步代码块。 普通代码块 定义在方法中的代码&#x…

【go语言之thrift协议一】

go语言之thrift协议thrift文件shared.thriftSharedStructSharedServiceSharedServiceProcessorSharedServiceGetStructArgsSharedServiceGetStructResulttutorial.thrift基本数据类型引入其他thrift文件自定义类型定义常量enum继承thrift 相对于grpc而言&#xff0c;可能用的不…

逆向-还原代码之max 再画堆栈图 (Interl 64)

// source code #include <stdio.h> void max(int * a, int * b) { if (*a < *b) *a *b; } int main() { int a 5, b 6; max(&a, &b); printf("a, b max %d\n", a); return 0; } // 再画堆栈图 下周一&#xff08;2.27…

JavaEE简单示例——MyBatis关联映射

简单介绍&#xff1a; 在我们之前的案例中&#xff0c;我们进行了简单查询&#xff0c;条件产村&#xff0c;动态SQL的条件查询&#xff0c;但是这些操作都是在一张表中进行的&#xff0c;而在我们之前学习MySQL中还有一个很重要的操作就是多表查询操作&#xff0c;也就是说通…

图像亮度调整

非线性方式 调整图像的方法有很多&#xff0c;最常用的方法就是对图像像素点的R、G、B三个分量同时进行增加&#xff08;减少&#xff09;某个值&#xff0c;达到调整亮度的目的。即改变图像的亮度&#xff0c;实际就是对像素点的各颜色分量值做一个平移。这种方法属于非线性的…

适用于产研团队协作工具有哪些?盘点6大类协同办公软件

团队协作工具在提高团队协作效率、质量和灵活性&#xff0c;降低成本等方面都有着不小的作用。而根据协作内容、团队等特点的不同&#xff0c;团队协作工具可以分为多种类型&#xff0c;常见的包括&#xff1a;即时通讯工具&#xff0c;用于实时交流和沟通&#xff0c;其中又可…

SpringBoot整合JPA+人大金仓(kingbase8)

陈老老老板&#x1f9b8;&#x1f468;‍&#x1f4bb;本文专栏&#xff1a;国产数据库-人大金仓&#xff08;kingbase8&#xff09;&#xff08;主要讲一些人大金仓数据库相关的内容&#xff09;&#x1f468;‍&#x1f4bb;本文简述&#xff1a;本文讲一下Jpa框架整合人大金…

Spring Cloud Nacos源码讲解(三)- Nacos客户端实例注册源码分析

Nacos客户端实例注册源码分析 实例客户端注册入口 流程图&#xff1a; 实际上我们在真实的生产环境中&#xff0c;我们要让某一个服务注册到Nacos中&#xff0c;我们首先要引入一个依赖&#xff1a; <dependency><groupId>com.alibaba.cloud</groupId><…

Bootstrap入门到精通(最全最详细)

文章目录前言一、Bootstrap是什么&#xff1f;二、Bootstrap安装方式一&#xff1a;将压缩包下载到本地引入使用方式二&#xff1a;使用Bootstrap官方cdn二.Bootstrap容器下面是屏幕宽度在不同大小时不同容器的显示状态三.Bootstrap栅格系统bootstrap网格系统有以下六个类网格系…