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. Python Package Cheatsheet

    Web 服务:tornado pip3 install tornado import sys import tornado.ioloop import tornado.web import json ...

  2. vue之keep-alive的使用

    keep-alive:是vue内置的一个组件,可以使被包含的组件保留状态或避免重新渲染.有两个生命周期函数:activated.deachtivated.在vue 2.1.0版本后新增了两个属性:in ...

  3. 如何使用 C++ 和 OpenCV 实现截屏

    前言 实现屏幕截屏需要用到 Windows API,所以需要包括 Windows.h 头文件.同时我们想要对截图做进一步的处理,就需要用到 OpenCV.关于 OpenCV 的安装与编译可以参见 &l ...

  4. 原生js获取子元素

    感谢原文作者:归一山人 原文链接:https://www.cnblogs.com/guiyishanren/p/12214757.html 获取子元素的方法有 //获取第一个demo类 dom = d ...

  5. k8s之PV、PVC

    目录 一.PVC和PV 1.1 PV概念 1.2 PVC概念 1.3 PV与PVC之间的关系 1.4 两种PV的提供方式 二.基于nfs创建静态PV资源和PVC资源 2.1 配置nfs存储(192.1 ...

  6. docker基础——1.原理解读

    1. 相关内核知识 docker本质上是宿主机上的进程. 通过namespace实现资源隔离,通过cgroups实现资源限制,通过写时复制机制copy-on-write实现高效文件操作. 依赖kern ...

  7. 当Synchronized遇到这玩意儿,有个大坑,要注意!

    你好呀,我是歪歪. 前几天在某技术平台上看到别人提的关于 Synchronized 的一个用法问题,我觉得挺有意思的,这个问题其实也是我三年前面试某公司的时候遇到的一个真题,当时不知道面试官想要考什么 ...

  8. Java四舍五入保留n位小数的常用写法

    1. 使用BigDecimal double v = 1.233; double res = new BigDecimal(v).setScale(2, RoundingMode.HALF_UP).d ...

  9. 微服务如何聚合 API 文档?这波秀~

    今天这篇文章介绍一下微服务如何聚合Swagger实现接口文档管理. 文章目录如下: 为什么需要聚合? 微服务模块众多,如果不聚合文档,则访问每个服务的API文档都需要单独访问一个Swagger UI界 ...

  10. IP分组和分片

    本文讨论两个问题①IP数据报的首部②IP数据报的分片 TCP/IP模型分为五层,从上到下依次是应用层.传输层.网络层.数据链路层和物理层. IP数据报是网络层的概念. IP数据报的首部 版本号:0~3 ...