class QWebChannel#

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

Inheritance diagram of 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 的方法时,仅在 QFuture 完成后,QWebChannel 才会发送带有 QFuture 结果的响应。

通过定义与 QMetaType::registerConverter() 相关联的转换器来支持类型从 JSON 到类型和从类型到 JSON 的自定义转换。请注意,如果 QJsonValue 不符合预期格式,则从 QJsonValue 到具体类型的自定义转换器必须失败。否则,QWebChannel 无法回退到其默认转换机制。自定义转换器也位于 JavaScript 侧 上。

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

还存在一个声明的 WebChannel API

另请参阅

Qt WebChannel Standalone Example JavaScript API registerConverter()

注意

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

property blockUpdatesᅟ: bool#

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

更改将被记录,并在更新再次由将此属性设置为 false 激活时发送给客户端。默认情况下,更新不会被阻塞。

访问函数
property propertyUpdateIntervalᅟ: int#

此属性控制属性更新间隔。

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

访问函数
__init__([parent=None])#
参数:

parentQObject

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

请注意,只有将 QWebChannel 连接到 QWebChannelAbstractTransport 后,它才能完全正常工作。HTML 客户端也需要使用 qwebchannel.js 正确设置:ref:` <Qt-WebChannel-JavaScript-API>` 。

blockUpdates()#
返回类型:

bool

另请参阅

setBlockUpdates()

属性 blockUpdatesᅟ 的获取器。

blockUpdatesChanged(block)#
参数:

block – bool

属性 blockUpdatesᅟ 的通知信号。

connectTo(transport)#
参数:

transportQWebChannelAbstractTransport

QWebChannel 连接到指定的 transport 对象。

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

deregisterObject(object)#
参数:

objectQObject

QWebChannel 注销给定的 object

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

disconnectFrom(transport)#
参数:

transportQWebChannelAbstractTransport

断开QWebChanneltransport对象的连接。

另请参阅

connectTo()

propertyUpdateInterval()#
返回类型:

int

propertyUpdateInterval属性的获取器。

registerObject(id, object)#
参数:

将单个对象注册到QWebChannel

对象的属性、信号和公开方法将发布给远程客户端。在那里,将根据标识符在使用object的特性处构造一个具有相同标识符的对象。

注意

一个虽然可绑定但不具有NOTIFY信号的BINDABLE属性将在客户端上工作,但不会注册更改通知的回调机制。

注意

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

registerObjects(objects)#
参数:

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

将一组对象注册到QWebChannel

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

注意

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

registeredObjects()#
返回类型:

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

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

setBlockUpdates(block)#
参数:

block – bool

另请参阅

blockUpdates()

属性 blockUpdatesᅟ 的设置器。

setPropertyUpdateInterval(ms)#
参数:

ms – int

属性 propertyUpdateIntervalᅟ 的设置器。