qt 嵌入web页面_Qt嵌入浏览器(二)——QWebChannel实现与页面的通信

本文介绍了如何在Qt嵌入式浏览器中使用QWebChannel实现页面与C++之间的双向通信。通过创建JsContext类,定义sendMsg和onMsg方法,以及在js端调用QWebChannel接口,完成消息传递。同时,展示了页面向浏览器发送消息和浏览器向页面发送消息的完整流程。
摘要由CSDN通过智能技术生成

本篇简介

本篇的小目标:

借助QWebChannel,实现浏览器与页面的通信交互

上一节中我们实现了浏览器的基本功能和一个简易的调试界面。>>点这里回顾上节内容

本节将尝试在此基础上实现浏览器与所加载页面的相互通信。既然是相互通信,自然包含两个方向:

页面向浏览器发送消息

浏览器向页面发送消息

页面向浏览器发送消息

为了实现页面向浏览器发送消息,需要在一定程度上实现在页面中访问Qt对象。Qt官方的推荐方式是使用QWebChannel。借助官方提供的qwebchannel.js脚本,可以很方便地实现页面对Qt对象的调用,同时便于实现C++和html/js的解耦,方便使用不同技术栈的开发人员的分工。

注:qwebchannel.js在Qt发布版的文件夹下可以找到。

Qt这边,为了方便后续开发,我们先设计一个JsContext类,声明如下:

class JsContext : public QObject

{

Q_OBJECT

public:

explicit JsContext(QObject *parent = nullptr);

signals:

void recvdMsg(const QString& msg);

public:

// 向页面发送消息

void sendMsg(QWebEnginePage* page, const QString& msg);

public slots:

// 接收到页面发送来的消息

void onMsg(co

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值