- class QWebChannel#
将 QObjects 暴露给远程 HTML 客户端。 更多信息…
摘要#
属性#
blockUpdates
- 当设置为 true 时,更新被阻塞,远程客户端将不会通知关于属性更改propertyUpdateInterval
- 属性更新间隔
方法#
槽#
定义
connectTo()
信号#
注意
本文档可能包含从 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毫秒。
使用给定的
parent
构造QWebChannel
对象。请注意,只有将
QWebChannel
连接到QWebChannelAbstractTransport
后,它才能完全正常工作。HTML 客户端也需要使用qwebchannel.js
正确设置:ref:` <Qt-WebChannel-JavaScript-API>` 。- blockUpdates()#
- 返回类型:
bool
另请参阅
属性
blockUpdatesᅟ
的获取器。- blockUpdatesChanged(block)#
- 参数:
block – bool
属性
blockUpdatesᅟ
的通知信号。- connectTo(transport)#
- 参数:
transport –
QWebChannelAbstractTransport
将
QWebChannel
连接到指定的transport
对象。然后,该传输对象将处理 C++ 应用程序与远程 HTML 客户端之间的通信。
从
QWebChannel
注销给定的object
。远程客户端将接收到给定对象的
destroyed
信号。- disconnectFrom(transport)#
- 参数:
transport –
QWebChannelAbstractTransport
断开
QWebChannel
与transport
对象的连接。另请参阅
- propertyUpdateInterval()#
- 返回类型:
int
将单个对象注册到
QWebChannel
。对象的属性、信号和公开方法将发布给远程客户端。在那里,将根据标识符在使用
object
的特性处构造一个具有相同标识符的对象。注意
一个虽然可绑定但不具有
NOTIFY
信号的BINDABLE
属性将在客户端上工作,但不会注册更改通知的回调机制。- registerObjects(objects)#
- 参数:
objects – 字典,键为QString类型,值为QObject类型。
将一组对象注册到
QWebChannel
。对象的属性、信号和公开可调用的方法将发布给远程客户端。在那里,将根据在
objects
映射中用作键的标识符构造一个对象。- registeredObjects()#
- 返回类型:
字典,键为QString类型,值为QObject类型。
返回已发布到远程客户端的已注册对象映射。
- setBlockUpdates(block)#
- 参数:
block – bool
另请参阅
属性
blockUpdatesᅟ
的设置器。- setPropertyUpdateInterval(ms)#
- 参数:
ms – int
属性
propertyUpdateIntervalᅟ
的设置器。