Qt:QWebEngineView
0、说明
QWebEngineView提供一个用于展示和编辑网页内容的Widget,QWebEngineView本质是一个Widget。
一个Web View通过load( QUrl )方法加载一个URLs对应的Site。
创建并加载Web Site之后,调用show()方法展示View。
以上三段就是在Qt Widget中加载一个Web View的基本过程,写成代码就是:
QWebEngineView * view = new QWebEngineView(parent); view->load(QUrl("http://qt-project.org/")); view->show();
此外,也可以用setUrl()方法可以用于加载Web Site,如果我们有一个HTML 内容,可以用setHtml()方法进行加载。
加载Web View时的一些信号
loadStarted()信号:View开始加载时发送;
loadProgress()信号:任意Web元素完成加载时发送;
loadFinished()信号:整个View都加载完成时发送。
属性与信号
page()方法返回一个指向QWebEnginePage的指针。一个QWebEngineView包含一个QWebEnginePage,它允许我们访问QWebEngineHistory,即网页的历史信息。
Web View的title属性通过title()访问。
一个Site会有一个icon,通过icon()访问,这个icon的URL通过iconUrl()访问。当title、icon改变时,相应的会发送titleChanged()、iconChanged()、iconUrlChanged()信号。
zoomFactor()返回一个zoomFactor属性,标志页面内容的缩放等级。
Widget中包含了一个文本菜单,提供了一些浏览器常用的action。如果要定制一个菜单,或者向原菜单、工具栏中添加一些额外的action,可以通过pageAction()构造。此外,这些action也可以通过triggerPageAction()直接触发。
如果我们想支持web site打开一个新的窗口,比如一个弹出窗口,我们可以自定义一个QWebEngineView子类并重写createWindow()方法。
案例
WebEngine Widgets Simple Browser Example,
WebEngine Content Manipulation Example
WebEngine Markdown Editor Example.
1、模块和加载项
Header | #include<QWebEngineView> |
qmake | QT += webenginewidgets |
Since | Qt 5.4 |
Inherits | QWidget |
2、构造
QWebEngineView(QWidget *parent = Q_NULLPTR) | 构造一个空QWebEngineView,它属于Parent Widget |
3、属性
类型 |
属性 |
说明 |
相关方法 |
相关信号 |
bool | hasSelection | 是否选中了page中的元素 | hasSelection() | |
QIcon | icon | 现在显示的page的icon | icon() | iconChanged(QIcon icon) |
QUrl | iconUrl | 该page关联的URL | iconUrl() | iconUrlChanged(QUrl url) |
QString | selectedText | 现在选中的文本 | selectedText() | |
QString | title | HTML文档的中<title>元素的内容 | title() | |
QUrl | url | 该page关联的URL,重置该属性会导致页面重置 |
url() setUrl(QUrl url) |
|
qreal | zoomFactor | 缩放等级(范围[0.25 , 5.0]),默认1.0 |
zoomFactor() setZoomFactor(qreal factor) |
4、实例方法
以下只给出非getter、setter方法(这两种方法可以在第3节查找)
返回值类型 |
方法 |
说明 |
void | findText(...) |
查找指定的String、subString。 如果要清空Selection,只需要传递进一个空String即可。 resultCallback是bool类型,如果要找subString,其值就是true,否则就是false。 |
QWebEngineHistory * | history() | 返回一个指向历史的Page view的QWebEngineHistory指针 |
void | load(QUrl url) | 加载并展示指定的url |
void | load(QWebEngineHttpRequest & request) | 发送指定的request,显示返回的response |
QWebEnginePage * | page() | 返回一个指向page的指针 |
QAction * | pageAction(WebAction action) | 返回一个指向 操作当前page行为 的QAction的指针 |
void | setContent(const QByteArray &data, const QString &mimeType = QString(), const QUrl &baseUrl = QUrl()) | 用参数data设置web view的内容 |
void | setHtml(QString html , QUrl baseUrl = QUrl()) | 用参数html设置该web view的内容 |
void | setPage(QWebEnginePaege * page) | 将参数page设置为该web view的新page |
QWebEngineSettings * | settings() | 返回一个指向 view、page设置项的指针 |
void | triggerPageAction(action , bool checked = false) |
触发指定行为。 如果是可选行为,那么需要设置第二个参数。 |
5、信号
信号 |
说明 |
iconChanged( QIcon icon ) | 当当前view的icon修改时发送该信号,参数中的icon是新icon |
iconUrlChanged( QUrl url ) | 当icon的URL修改时发送该信号,参数中的url是新URL |
loadFinished( bool ok ) | 当一个page①加载完成或者②发生错误时发送该信号 |
loadProgress( int progress ) | 每有一个page元素(image或script)完成加载时发射该信号,参数progress表明当前page的加载进度 |
loadStarted() | 当新page开始加载时发射该信号 |
renderProcessTerminated(...) | 当连接过程以一个非0状态码结束时发射该信号 |
selectionChanged() | 当在页面上的任意选择项更改时发送该信号 |
titleChanged( QString title ) | 当title改变时发送该信号 |
urlChanged( QUrl url ) | 当url改变时发送该信号 |
6、槽
槽 |
说明 |
back() | 返回前一个页面 |
forward() | 返回后一个页面 |
reload() | 重载当前页面 |
stop() | 停止在家当前页面 |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性