0、说明

QWebChannel的作用是将QObject展示给的HTML客户。

QWebChannel是连接C++应用和HTML/JS应用的桥梁。通过把一个QObject传入QWebChannel并在网页端使用qwebchannel.js,我们就可以方便、透明地访问该QObject的属性、方法和槽。在此期间,不需要人为传递控制和序列化信息,信号、属性就会自动传递到HTML用户端。

在HTML用户端,每个QObject都会生成一个对应的js object。这个js obj的各项行为可以认为是C++相关对象的镜像,可以直观地反映出来。

QWebChannel使得C++应用与HTML客户间的通话简单化,不管这个客户是在本地还是异地。唯一的限制是,HTML客户需要支持qwebchannel.js中所说的JS特性。只有这样,应用程序才能正常地与任何现代HTML浏览器或者运行时JS(如node.js)交互。

例子

Qt WebChannel Standalone Example

JavaScript API.

1、模块和加载项

Header

#include<QWebChannel>

qmake QT += webchannel
Since Qt 5.4
Inherits QObject

2、属性

类型

属性

说明

相关方法

信号

bool blockUpdates 设置为true时,QObject的变化与更新将会被阻塞,用户也不会知道这些变化

blockUpdates()

setBlockUpdates(bool block)

blockUpdatesChanged(bool block)

3、构造

QWebChannel(QObject *parent = Q_NULLPTR)

用给定的parent构造一个QWebChannel对象。

一个QWebChannel只有在它连接到一个QWebChannelAbstractTransport时,才能对它进行各种操作。HTML客户同时也需要合理设置qwebchannel.js。

4、方法

返回值类型

方法

说明

bool blockUpdates() 属性blockUpdate的getter
void deregisterObject( QObject * object )

取消给定object和QWebChannel间的绑定

异地的客户将会受到一个destroyed信号

void registerObject( QString id , QObject * object )

将一个object与QWebChannel进行绑定

object的属性、信号、方法会被传递给异地的客户。之后,一个有着指定id的object将被构建

需要注意的是:1、objects必须在所有客户初始化之前被绑定;2、该方法可以通过meta-system系统和QML进行调用

void registerObjects( QHash<QString,QObject *> objects ) 将一组objects与QWebChannel进行绑定。绑定完成后,每个object的id将被QHash中的每一项Key-Value指定。
QHash<QString,QObject *> registerObjects() 返回已绑定的object和它的id的映射
void setBlockUpdates( bool block ) 属性blockUpdate的setter

5、信号

void blockUpdatesChanged(bool block)  

6、槽

void connectTo( QWebChannelAbstractTransport * transport)

把当前QWebChannel连接到给定的transport对象

之后这个transport对象就维持了C++应用和HTML用户间的连接

void disconnectFrom(QWebChannelAbstractTransport * transport)  取消当前QWebChannel和给定transport对象的连接

Qt:QWebChannel的更多相关文章

  1. Qt的QWebChannel和JS、HTML通信/交互驱动百度地图

    Qt的QWebChannel和JS.HTML通信/交互驱动百度地图 0 前言 我一个研究嵌入式的,不知道怎么就迷上了上位机,接了几个项目都是关于Qt,这个项目还是比较经典的,自己没事儿的时候也进行研究 ...

  2. Qt:禁止qDebug的输出

    Qt:禁止qDebug的输出 在工程的.pro文件里加上以下编译批令即可: DEFINES += QT_NO_DEBUG_OUTPUT

  3. Qt:使用自定义的字体

    Qt:使用自定义的字体 1. 下载字体文件 2. 加载字体文件 3. 使用字体   QFontDatabase::addApplicationFont("XENOTRON.TTF" ...

  4. Qt:QJsonObject

    0.说明 QJsonObject在逻辑上就是一个Map或Dict!记住这一点对理解它的方法.说明很有帮助. QJsonObject类封装了JSON Object. JSON Object是一个Key- ...

  5. Qt:QJsonValue

    0.说明 QJsonValue类用于操作JSON中的各种数据. JSON是用于存储结构化数据的格式,JSON中的数据可以是六种类型: 基本类型 存储类型 bool QJsonValue::Bool d ...

  6. Qt:QJsonArray

    0.说明 QJsonArray中存储了一系列的QJsonValue.可以向其中插入.删除QJsonValue. 一个QJsonArray可以与QVariantList互相转换.可以通过size()访问 ...

  7. Qt:QUrl构造时的qrc前缀

    参考(按对我帮助从大到小排列): Qt内的各种路径(让人迷惑) - 鬼谷子com - 博客园 qt webengineview 加载本地资源方式 - beautifulday - 博客园 (17条消息 ...

  8. QT:用QWebSocket实现webchannel,实现C++与HTML通信

    基本原理是通过channel将C++对象暴露给HTML,在HTML中调用qwebchannel.js.前提是建立transport,QT只提供了一个抽象基类QWebChannelAbstractTra ...

  9. Qt:正则表达式语法:

         正则表达式是验证输入.从输入中提取数据以及对输入进行搜索和替换的强大工具,所谓正则表达式,regexp是一种利用模式匹配语言来描述字符串组成限制条件的方式;        Qt 提供了一个Q ...

随机推荐

  1. ansible 常用模块和playbook

  2. 合宙AIR105使用Keil MDK + DAP-Link 烧录和调试

    关于AIR105 AIR105是合宙LuatOS生态下的一款芯片, 1月初上市, 开发板与摄像头一起搭售(赠送). 从配置信息看, 芯片性能相当不错: Cortex-M4F内核, 最高频率204Mhz ...

  3. uni微信小程序优化,几行代码就能省100kb的主包空间?

    不是标题党,我们公司的项目确确实实是省下了100kb的主包空间,而且还是在没有牺牲任何的性能和业务的前提下实现的. 但是100kb是根据项目大小,所以你用这个插件可能省下超过100kb或者更少. 直接 ...

  4. 截取一段时间内的log日志

    可以使用sed命令对log文件进行抽取操作:1,sed查看某时间段到现在的系统日志:sed -n '/May 20 17/,$p' /var/log/messages | less2,sed 截选时间 ...

  5. js Array.prototype.slice.call(arguments,0) 理解

    Array.prototype.slice.call(arguments,0) 经常会看到这段代码用来处理函数的参数 网上很多复制粘帖说:Array.prototype.slice.call(argu ...

  6. Shell中的变量替换

    ${str-newStr} 仅当str为null的时候替换 ${str:-newStr} 当str为null或者str为空字符串的时候替换 综上,-号,当str没有内容,则替换, :号只是增加了空字符 ...

  7. iOS中通过链接地址打开指定APP并传参 by徐文棋

    基于项目需要,有时候需要通过一个链接,或者二维码扫描来直接打开我们所开发的客户端. 当然了.客户端也不仅仅是需要被打开,而且还要跳到相应的页面去,因此这里需要传参. 客户端想用链接打开,必须要在inf ...

  8. 【第十八期】分享一个网易go面经

    自我介绍 未来的主要方向 介绍下之前的项目用到的优化点.难点 为什么不要大量使用goroutine gpm模型 go里面goroutine创建数量有限制吗? 线程和协程有什么区别 golang支持哪些 ...

  9. 介绍回流与重绘(Reflow & Repaint),以及如何进行优化?

    前言 回流与重绘对于前端来说可以说是非常重要的知识点了,我们不仅需要知道什么是回流与重绘,还需要知道如何进行优化.一个页面从加载到完成,首先是构建DOM树,然后根据DOM节点的几何属性形成render ...

  10. C++职工管理系统

    目录 职工管理系统 一. 需求 二. 创建管理类 1.创建文件 2. 头文件实现 3. 源文件实现 三. 菜单功能 1. 添加成员函数 2. 功能实现 3. 测试菜单功能 四. 退出功能 1. 提供功 ...