QWebChannel 类

将 QObjects 公开给远程 HTML 客户端。 更多信息...

头文件 #include <QWebChannel>
qmakeQT += webchannel
继承 QObject

属性

公共函数

QWebChannel(QObject *parent = nullptr)
virtual~QWebChannel()
QBindable<bool>bindableBlockUpdates()
QBindable<int>bindablePropertyUpdateInterval()
boolblockUpdates() const
voidderegisterObject(QObject *object)
intpropertyUpdateInterval() const
voidregisterObject(const QString &id, QObject *object)
voidregisterObjects(const QHash<QString, QObject *> &objects)
QHash<QString, QObject *>registeredObjects() const
voidsetBlockUpdates(bool block)
voidsetPropertyUpdateInterval(int ms)

公共槽

voidconnectTo(QWebChannelAbstractTransport *transport)
voiddisconnectFrom(QWebChannelAbstractTransport *transport)

信号

voidblockUpdatesChanged(bool block)

详细描述

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 之间进行自定义转换,以及从和到 QJsonValue。请注意,从 QJsonValue 到具体类型的自定义转换器如果 QJsonValue 不符合预期的格式,则必须失败。否则,QWebChannel 无法回退到其默认的转换机制。自定义转换器对于JavaScript 侧也是可用的。

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

还存在着一个声明式的WebChannel API

另请参阅 Qt WebChannel 独立示例JavaScript API,以及QMetaType::registerConverter

属性文档

[bindable] blockUpdates : bool

注意:此属性支持 QProperty 绑定。

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

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

[bindable] propertyUpdateInterval : int

注意:此属性支持 QProperty 绑定。

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

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

成员函数文档

[explicit] QWebChannel::QWebChannel(QObject *parent = nullptr)

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

注意,只有在将 QWebChannel 连接到 QWebChannelAbstractTransport 后,QWebChannel 才完全可用。HTML 客户端也需要使用 qwebchannel.js 适当设置。

[virtual noexcept] QWebChannel::~QWebChannel()

销毁 QWebChannel。

[slot] void QWebChannel::connectTo(QWebChannelAbstractTransport *transport)

QWebChannel 连接到给定的 transport 对象。

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

另请参阅 QWebChannelAbstractTransportQWebChannel::disconnectFrom

[invokable] void QWebChannel::deregisterObject(QObject *object)

从 QWebChannel 中注销给定的 object

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

注意: 此功能可以通过元对象系统从QML调用。请参阅Q_INVOKABLE

另请参阅 QWebChannel::registerObjects(),QWebChannel::registerObject()和QWebChannel::registeredObjects()。

[slot] void QWebChannel::disconnectFrom(QWebChannelAbstractTransport *transport)

断开QWebChannel传输对象的连接。

另请参阅 QWebChannel::connectTo()。

[invokable] void QWebChannel::registerObject(const QString &id, QObject *object)

将单个对象注册到QWebChannel

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

注意: BINDABLE属性但没有NOTIFY信号将在客户端上正常更新属性,但没有机制注册回调以通知更改。

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

注意: 此功能可以通过元对象系统从QML调用。请参阅Q_INVOKABLE

另请参阅 QWebChannel::registerObjects(),QWebChannel::deregisterObject()和QWebChannel::registeredObjects()。

void QWebChannel::registerObjects(const QHash<QString, QObject *> &objects)

将一组对象注册到QWebChannel

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

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

另请参阅 QWebChannel::registerObject(),QWebChannel::deregisterObject()和QWebChannel::registeredObjects()。

QHash<QString, QObject *> QWebChannel::registeredObjects() const

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

另请参阅 QWebChannel::registerObjects(),QWebChannel::registerObject()和QWebChannel::deregisterObject()。

© 2024 Qt公司有限公司。此处包含的文档贡献的版权属于各自的所有者。此处提供的文档根据自由软件基金会发布并由其授权的GNU自由文档许可证版本1.3的条款获得许可。Qt和相应的标志是芬兰及/或世界其他地区的Qt公司有限公司的商标。所有其他商标均为各自所有者的财产。