Qt QWebEngine应用和网页的交互

一、QWebEngine简介
1、Qt WebEngine模块提供了一个Web浏览器引擎,可以轻松地将万维网上的内容嵌入到没有本机Web引擎的平台上的Qt应用程序中。

2、Qt WebEngine提供了用于渲染HTML,XHTML和SVG文档的C ++类和QML类型,它们使用级联样式表(CSS)进行样式设置并使用JavaScript编写脚本。 用户可以通过使用HTML元素上的contenteditable属性,使HTML文档完全可编辑

3、引擎架构

在这里插入图片描述

4、QT WebEngine小部件模块

在这里插入图片描述

5、示例

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWebEngineView view ;
view.load(QUrl(“http://www.baidu.com/”));
view.show();
return a.exec();
}
二、QWebEngine应用和网页的交互
1、QT侧实现原理
实现一个继承于QObject的通信类,注意,要继承于QObject,因为需要用到信号槽,这个类的主要作用是实现本地应用与网页端通信的方法,无论本地应用还是网页端都是直接调用这个通讯类的方法来实现两者之间的通讯的。例如下面例子中的QWebChannelClass类。重点:本地应用与网页端之间的通讯过程,是通过信号和槽函数实现的,本地应用通过发送信号达到把信息发送到网页端,而网页端通过直接调用槽函数实现把信息传到本地应用。很简单,就是本地应用通过发送通讯类的信号通知网页端,网页端通过直接调用通讯类的槽函数来通知本地应用。网页端对本地应用的操作一定要调用槽函数,写在public slots 限定符下面的槽函数,不能是普通的public函数。

2、QT侧实现
qwebchannelclass.h

#ifndef QWEBCHANNELCLASS_H
#define QWEBCHANNELCLASS_H
#include
class QWebChannelClass : public QObject
{
Q_OBJECT
public:
explicit QWebChannelClass(QObject *parent = nullptr);
signals:
void fromLocalToWebPage(const QString& strTemp); //信号,发送这个信号就会把信息发送到网页端
public slots:
void fromWebPageToLocal(const QString& strTemp); //槽函数,网页端将通过这个函数把信息传回本地应用。
};
#endif // QWEBCHANNELCLASS_H
qwebchannelclass.cpp

#include “qwebchannelclass.h”
#include
QWebChannelClass::QWebChannelClass(QObject *parent) : QObject(parent)
{

}
void QWebChannelClass::fromWebPageToLocal(const QString& strTemp)
{
qDebug()<<QString(“string from WebPage:%1”).arg(strTemp);
emit fromLocalToWebPage(“fromLocalToWebPage”); //为了简单,当网页端调用槽函数时,直接在这里发送一个信号回网页端
}

2.2 注册通讯类,创建一个QWebChannel类对象,然后将步骤一中实现的通信类对象通过void QWebChannel::registerObject(const QString &id, QObject *object)注册到QWebChannel对象中,其中参数一是一个字符串,这个很重要,这个id将作为一个标识符参与网页端QWebChannel对象的创建,网页端通过这个id创建的对象将可以直接访问通信类的方法实现通信,注册好后将这个QWebChannel对象设置到即将加载我们指定网页的QWebEnginePage中,下面看代码:

m_pWebEngineView = new QWebEngineView(this);
QWebChannel *pChannel=new QWebChannel(this); //创建一个Qwebchannel对象
pChannel->registerObject(QStringLiteral(“channelObject”),m_pWebChannelClass); //注册通信类对像
m_pWebEngineView->page()->setWebChannel(pChannel);//将QWebChannel 对象设置到网页载体QWebEnginePage中
3、H5侧实现
3.1 导入qwebchannel.js文件

qwebchannel.js

3.2 创建网页端通信对象,qwebchannel.js在Qt安装目录下可以找到(直接在安装目录下检索就好了),详细看每句的注释

<!doctype html>

3.3.1 加载主播中心的Url的时候,设置了两个header 分别是:“x-auth-token"和"uid”

3.3.2 跳转函数参数为json,json格式待定

三、参考文档
1、https://doc.qt.io/qt-5/qtwebengine-overview.html#qt-webengine-module

2、https://blog.csdn.net/Y_Bingo/article/details/82954940

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

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

相关文章

d202552-sql

一、184. 部门工资最高的员工 - 力扣&#xff08;LeetCode&#xff09; 要找到每个部门工资最高的 使用窗口函数 加排序函数 排序函数用rank dense_rank都行 把最高相同的找出来就行 select *, dense_rank() over(partition by departmentId order by Salary desc) as rank …

AntSK:基于大模型的一体化AI知识库解决方案深度解析

随着大模型&#xff08;如GPT、LLM&#xff09;技术的飞速发展&#xff0c;企业对智能知识管理和专属AI助手的需求日益增长。AntSK 正是在这一背景下诞生的企业级AI一体机解决方案。本文将从技术架构、核心功能、创新点和应用场景等方面&#xff0c;深入解析 AntSK 如何助力企业…

在Electron中爬取CSDN首页的文章信息

背景 之前分享了Electron入门的相关文章&#xff1a;https://gitee.com/ruirui-study/electron-demo 后来&#xff0c;我就想在里面多做一些演示给大家看&#xff0c;集成了以下功能及演示&#xff1a; 窗口管理、各种方法封装托盘管理菜单管理获取屏幕演示多窗口及通信演示…

bfs处理 推多米诺

前言&#xff1a;这个题目本来打算一次遍历来写&#xff0c;但是写的时候发现有点难搞&#xff0c;后面发现是 bfs &#xff0c;但是这个bfs 不是很好处理&#xff0c;后面看了题解&#xff0c;颇有感触 这个和堆处理的最短路是一样的&#xff0c;在取出一个位置的时候才对其进…

【Java IO流】File类基础详解

参考笔记&#xff1a;java File类基础 万字详解&#xff08;通俗易懂&#xff09;-CSDN博客 目录 1.前言 2. File类介绍 3. File类构造方法 4.File类常用的方法案例演示 4.1 创建文件/文件夹的方法 4.2 删除文件/文件夹的方法 4.3 判断文件/文件夹是否存在的方法 4.4 …

【业务领域】InfiniBand协议总结

InfiniBand协议总结 InfiniBand协议是什么&#xff1f;Infiniband产生的原因Mellanox公司介绍及其新闻基于TCP/IP的网络与IB网络的比较IB标准的优势什么是InfiniBand网络什么是InfiniBand架构Mellanox IB卡介绍InfiniBand速率发展介绍InfiniBand网络主要上层协议InfiniBand管理…

蒙特卡罗方法(Monte Carlo Method)​​:基于随机采样的数值计算与模拟技术

​​核心思想​​ 蒙特卡罗方法通过​​随机采样​​和​​统计模拟​​解决数学、物理、工程等领域的复杂问题&#xff0c;其核心是利用​​大数定律​​——当样本量足够大时&#xff0c;样本均值会收敛于期望值。 ​​关键特点​​&#xff1a; ​​无维度诅咒​​&#x…

【资料分享】全志T536(异构多核ARMCortex-A55+玄铁E907 RISC-V)工业核心板硬件说明书

前 言 本文为创龙科技SOM-TLT536工业核心板硬件说明书,主要提供SOM-TLT536工业核心板的产品功能特点、技术参数、引脚定义等内容,以及为用户提供相关电路设计指导。 为便于阅读,下表对文档出现的部分术语进行解释;对于广泛认同释义的术语,在此不做注释。

【2025年五一数学建模竞赛】A题 完整论文 模型建立与求解

目录 2025年五一数学建模竞赛 A题基于历史数据与模式识别的道路车流量推测模型研究摘要一、问题的背景和重述1.1问题的背景1.2问题的重述 二、问题的分析三、模型假设四、符号及变量说明五、模型的建立与求解问题一&#xff1a;基于线性回归的支路车流量推测问题二&#xff1a;…

MySQL初阶:数据库基础,数据库和表操作,数据库中的数据类型

1.数据库基础 数据库是一个客户端——服务器结构的程序。 服务器是真正的主体&#xff0c;负责保存和管理数据&#xff0c;数据都存储在硬盘上 数据库处理的主要内容是数据的存储&#xff0c;查找&#xff0c;修改&#xff0c;排序&#xff0c;统计等。 关系型数据库&#…

“会话技术”——Cookie_(2/2)原理与使用细节

经过Cookie的快速入门与代码使用。如果想深入理解Cookie的技术实现&#xff0c;就得去理解它的原理。 且有些时候使用Cookie&#xff0c;还要根据需求设置存活期限以及确定Cookie获取范围等其他细节。最后&#xff0c;我们会总结Cookie这门客户端会话技术的作用。 一、原理 注…

DBeaver连接人大金仓数据库V9

1、官网下载驱动jdbc 打开官网地址&#xff0c;找到下面的V9R1-JDBC&#xff0c;点击后面的下载即可&#xff0c;保存到本地 2、解压最新版的驱动程序 3、把***_JDBC文件夹内的驱动程序复制到DBeaver安装目录下的plugins文件夹里 4、打开dbeaver程序&#xff0c;增加kingbase…

服务器丢包率测试保姆级教程:从Ping到网络打流仪实战

测试服务器丢包率是网络性能诊断的重要环节&#xff0c;丢包通常由网络拥塞、硬件故障、配置错误或线路质量差导致。以下是多种测试方法的详细步骤和工具说明&#xff1a; 一、基础工具测试&#xff08;无需专业设备&#xff09; 1. 使用 ping 命令 命令示例&#xff1a; bash…

n8n 使用 AI Agent 和 MCP 社区节点

n8n 使用 AI Agent 和 MCP 社区节点 0. 前提条件1. 创建一个 "在聊天消息时" 节点2. 创建一个 "AI Agent" 节点 0. 前提条件 请参考 n8n 安装 n8n-nodes-mcp 社区节点 安装 MCP 社区节点。 1. 创建一个 “在聊天消息时” 节点 单击 “测试聊天”&#xf…

抱佛脚之学SSMSpringMVC数据绑定

绑定默认数据类型 绑定简单数据类型 绑定POJO类型 绑定包装POJO 复杂数据绑定 绑定数组 绑定集合

解决“‘mvn‘ 不是内部或外部命令,也不是可运行的程序”错误

一、问题描述 当我们在Windows上运行sqlrest 工具时,提示mvn 不是内部或外部命令,也不是可运行的程序的错误,导致无法安装sqlrest工具,如下图所示: 二、问题分析 从提示中我们不难看出是由于我们缺失了【maven】环境,导致无法启动项目;我们只需要安装【maven】环境即可解…

DeepSeek R1:强化学习范式的推理强化模型

定位与目标 DeepSeek R1 的推出并非 DeepSeek V3 的简单迭代,而是一次在训练范式上的大胆探索。与传统大模型主要依靠监督微调(SFT)后进行强化学习不同,R1 将重点放在推理能力和行为对齐上,尝试通过大规模强化学习直接激发模型的推理潜力。其目标是利用强化学习的反馈机制,…

变转速振动信号分析处理与故障诊断算法模块

变转速振动信号分析处理与故障诊断算法模块&#xff0c;作为信号处理算法工具箱的主要功能模块&#xff0c;形成了以变转速振动信号分析处理与故障诊断算法模块的经典算法模型&#xff0c;可应用于各类关键机械部件&#xff08;轴承、齿轮、转子等&#xff09;的信号分析、故障…

Kafka 配置参数性能调优建议

文章目录 1、生产者调优batch.size&#xff08;重要&#xff09;linger.mscompression.typeacks&#xff08;重要&#xff09;buffer.memorymax.in.flight.requests.per.connection&#xff08;重要&#xff09;message.max.bytes&#xff08;重要&#xff09; 2、消费者调优fe…

Redis怎么避免热点数据问题

使用 RedisTemplate 避免热点数据问题的解决方案、场景及示例&#xff1a; 1. 数据分片&#xff08;Sharding&#xff09; 场景&#xff1a;高频读写的计数器&#xff08;如文章阅读量统计&#xff09; ​原理​&#xff1a;将数据分散到多个子键&#xff0c;降低单个 Key 的压…