Qt Remote Objects (QtRO) 是为 Qt 开发的 IPC (进程间通信) 模块。想法是扩展现有 Qt 功能,以在进程 (或计算机) 之间轻松交换信息。
Qt 实现这的关键特征之一是区别对象 API (由它的 Q_Property、Signals 和 Slots 定义) 同该 API 的实现。QtRO 的目的是满足期望 API,即使真实 QObject is in a different process. A Slot called on a copy of an object (called a 复本 在 QtRO) 会被转发给真实对象 (称为 源 在 QtRO) 进行处理。更新 源 (特性更改或发射信号) 会被转发给各 复本 .
A 复本 是轻量级代理对于 源 object, but one that supports the same connections and behavior of QObjects, which makes them as easy to use as any other QObject 由 QT 提供。一切都需要 复本 看起来像 源 对象由 QtRO 在幕后处理。
注意,远程对象的行为异于传统 RPC (远程过程调用) 实现。在 RPC,客户端发出请求并等待响应。在 RPC,服务器不会向客户端推送任何东西,除非是响应请求。RPC 的设计是经常使不同客户端彼此独立 (例如:2 个客户端可以向映射服务询问方向并获得不同结果)。虽然可能以 QtRO 实现这 (如 源 without properties, and Slots that have return values), it is designed more to hide the fact that the processing is really remote. You let a node give you the 复本 而不是自己创建,可以使用状态信号 ( isReplicaValid() ),然后与对象交互就像采用任何其它 QObject 基类型。
要启用 Qt Remote Objects 在工程中,添加此指令到 C++ 文件:
#include <QtRemoteObjects>
要链接到 Qt Remote Objects 模块,添加此行到工程文件:
QT += remoteobjects