导读:
这篇文章会通过简单的步骤及最简单的例子来介绍如何使用QWebChannel实现网页端跟本地应用之间的通讯,也就是两者之间的相互操作,这里不会介绍基础理论及这种通讯是怎么实现的,这篇文章的核心以最快的速度告诉你,如何把这个通讯过程搭建起来。这里说的本地应用就是使用QWebEngine实现的浏览器。
前提:
这篇文章是假设你已经有使用QWebEngine实现一个能打开网页的简单浏览器的基础的,因为不介绍这部分内容,但是例子里也有,也很简单,看代码里的注释也应该能快速搭建起来。
流程介绍:
一、实现一个继承于QObject的类(以下简称通信类)此类包含本地应用与网页端通信的所有方法
二、给本地应用的网页载体QWebEnginePage对象注册通信类对象
三、网页实现中引入qwebchannel.js,创建网页端的QWebChannel对象并与本地应用的通信类对像进行关联,最终实现网页端能够直接访问通信类的方法与本地应用进行通讯
详细介绍:
一、自实现一个继承于QObject的类,注意,要继承于QObject,因为需要用到信号槽,这个类的主要作用是实现本地应用与网页端通信的方法,这个就时上面步骤介绍中所说的通讯类,无论本地应用还是网页端都是直接调用这个通讯类的方法来实现两者之间的通讯的。例如下面例子中的QWebChannelClass类。重点:本地应用与网页端之间的通讯过程,是通过信号和槽函数实现的,本地应用通过发送信号达到把信息发送到网页端,而网页端通过直接调用槽函数实现把信息传到本地应用。很简单,就是本地应用通过发送通讯类的信号通知网页端,网页端通过直接调用通讯类的槽函数来通知本地应用。网页端对本地应用的操作一定要调用槽函数,写在public slots 限定符下面的槽函数,不能是普通的public函数。下面对号入座看通讯类的例子
qwebchannelclass.h:
#ifndef QWEBCHANNELCLASS_H
#define QWEBCHANNELCLASS_H
#include <QObject>
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:

本文详述了如何利用QWebChannel实现网页端与本地应用的双向通讯,通过实例演示了通讯类的设计、QWebChannel对象的注册及网页端的接入步骤。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



