QWebChannel 类
将 QObjects 公开给远程 HTML 客户端。 更多信息...
头文件 | #include <QWebChannel> |
qmake | QT += webchannel |
继承 | QObject |
属性
- blockUpdates : bool
- propertyUpdateInterval : int
公共函数
QWebChannel(QObject *parent = nullptr) | |
virtual | ~QWebChannel() |
QBindable<bool> | bindableBlockUpdates() |
QBindable<int> | bindablePropertyUpdateInterval() |
bool | blockUpdates() const |
void | deregisterObject(QObject *object) |
int | propertyUpdateInterval() const |
void | registerObject(const QString &id, QObject *object) |
void | registerObjects(const QHash<QString, QObject *> &objects) |
QHash<QString, QObject *> | registeredObjects() const |
void | setBlockUpdates(bool block) |
void | setPropertyUpdateInterval(int ms) |
公共槽
void | connectTo(QWebChannelAbstractTransport *transport) |
void | disconnectFrom(QWebChannelAbstractTransport *transport) |
信号
void | blockUpdatesChanged(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 客户端之间的通信。
另请参阅 QWebChannelAbstractTransport 和 QWebChannel::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公司有限公司的商标。所有其他商标均为各自所有者的财产。