PySide6.QtWebChannel.QWebChannel

class QWebChannel

将QObjects暴露给远程HTML客户端。更多

PySide6.QtWebChannel.QWebChannel 的继承图

概要

属性

方法

插槽

信号

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

QWebChannel 填补了 C++ 应用程序和 HTML/JavaScript 应用程序之间的空白。通过将一个派生自 QObject 的对象发布到 QWebChannel 并在 HTML 端使用 qwebchannel.js,可以透明地访问 QObject 的属性和公共槽及方法。不需要手动传递消息和序列化数据,C++ 端的属性更新和信号发射会自动传输到可能远程运行的 HTML 客户端。在客户端,将为任何发布的 C++ QObject 创建一个 JavaScript 对象。它镜像了 C++ 对象的 API,因此可以直观地使用。

QWebChannel 透明地支持 QFuture。当客户端调用一个返回 QFuture 的方法时,QWebChannel 只有在 QFuture 完成后才会发送带有 QFuture 结果的响应。

通过使用QMetaType::registerConverter()定义与QJsonValue之间的转换器,支持自定义类型与JSON之间的转换。请注意,如果QJsonValue与预期格式不匹配,从QJsonValue到具体类型的自定义转换器必须失败。否则QWebChannel无法回退到其默认的转换机制。自定义转换器在JavaScript端也可用。

C++ 的 QWebChannel API 使得与任何 HTML 客户端进行通信成为可能,这些客户端可以在本地甚至远程机器上运行。唯一的限制是 HTML 客户端必须支持 qwebchannel.js 使用的 JavaScript 功能。因此,基本上可以与任何现代 HTML 浏览器或独立的 JavaScript 运行时(如 node.js)进行交互。

还存在一个声明式的WebChannel API

另请参阅

Qt WebChannel 独立示例 JavaScript API registerConverter()

注意

当使用from __feature__ import true_property时,属性可以直接使用,否则通过访问器函数使用。

property blockUpdatesᅟ: bool

此属性设置为true时,更新将被阻止,远程客户端将不会收到属性更改的通知。

一旦通过将此属性设置为false解除更新阻塞,更改将被记录并发送给客户端。默认情况下,更新不会被阻塞。

Access functions:
property propertyUpdateIntervalᅟ: int

此属性保存属性更新间隔。

此间隔可以通过设置为正数来更改为不同的毫秒间隔。属性更新会在间隔到期后批量发送。如果设置为零,则在单个事件循环运行中发生的更新将被批量发送并在下一次运行中发送。如果为负数,更新将立即发送。默认值为50毫秒。

Access functions:
__init__([parent=None])
Parameters:

父对象QObject

使用给定的parent构造QWebChannel对象。

请注意,QWebChannel 只有在连接到 QWebChannelAbstractTransport 后才能完全运行。HTML客户端也需要使用 qwebchannel.js 进行适当设置:ref:` ` 。

blockUpdates()
Return type:

布尔

另请参阅

setBlockUpdates()

属性 blockUpdatesᅟ 的获取器。

blockUpdatesChanged(block)
Parameters:

block – 布尔值

属性 blockUpdatesᅟ 的通知信号。

connectTo(transport)
Parameters:

传输QWebChannelAbstractTransport

QWebChannel连接到给定的transport对象。

传输对象随后处理C++应用程序与远程HTML客户端之间的通信。

deregisterObject(object)
Parameters:

对象QObject

QWebChannel中注销给定的object

远程客户端将收到给定对象的destroyed信号。

disconnectFrom(transport)
Parameters:

传输QWebChannelAbstractTransport

断开QWebChanneltransport对象的连接。

另请参阅

connectTo()

propertyUpdateInterval()
Return type:

整数

属性 propertyUpdateIntervalᅟ 的获取器。

registerObject(id, object)
Parameters:

将单个对象注册到QWebChannel

object 的属性、信号和公共方法被发布到远程客户端。在那里,会构造一个标识符为 id 的对象。

一个属性如果是BINDABLE但没有NOTIFY信号,客户端上的属性更新将正常工作,但没有机制来注册变更通知的回调。

注意

当前的一个限制是,对象必须在任何客户端初始化之前进行注册。

registerObjects(objects)
Parameters:

objects – 字典,键类型为 .QString,值类型为 QObject。

将一组对象注册到QWebChannel

对象的属性、信号和公共可调用方法被发布到远程客户端。在那里,使用在objects映射中作为键的标识符构造一个对象。

注意

当前的一个限制是,对象必须在任何客户端初始化之前进行注册。

registeredObjects()
Return type:

字典的键类型为 .QString,值类型为 QObject。

返回已发布到远程客户端的注册对象映射。

setBlockUpdates(block)
Parameters:

block – 布尔值

另请参阅

blockUpdates()

属性 blockUpdatesᅟ 的设置器。

setPropertyUpdateInterval(ms)
Parameters:

ms – 整数

属性 propertyUpdateIntervalᅟ 的设置器。