QtRO (Qt Remote Objects) 是为 Qt 开发的 IPC (进程间通信) 模块。此模块扩展了 Qt 的现有功能,使进程 (或计算机) 之间能够轻松交换信息。
Qt 使这种信息能够交换的关键特征之一是对象 API (由其特性、信号及槽定义) 与该 API 实现之间的区别。QtRO 的目的是满足期望 API,即使真实 QObject 在不同进程中。称为槽的对象复本 ( 复本 在 QtRO) 会被转发给真实对象 ( 源 在 QtRO) 进行处理。各 Replica (复本) 接收 Source (源) 特性改变或发射信号的更新。
A 复本 是轻量级代理对于 源 对象,但 Replica (复本) 支持如 QObjects 的相同连接和行为,使之能以相同方式使用如任何其它 QObject 由 Qt 提供。在幕后,QtRO 处理看起来像其 Source (源) 的 Replica (复本) 的一切必要。
注意,远程对象的行为异于传统 RPC (远程过程调用) 实现,例如:
虽然以 QtRO 实现这种 RPC 风格行为是可能的,如没有特性的 Source (源) 和拥有返回值的槽,但 QtRO 隐藏了处理是真正远程的事实。让节点给您 Replica (复本),而不是自己创建的,可以使用状态信号 ( isReplicaValid ()),然后与对象交互就像采用任何其它 QObject 基类型。
考虑传感器,譬如 GPS (全球定位系统) 接收器。按 QtRO 术语:
考虑对打印机提供访问的服务。按 QtRO 术语:
使用 Qt 模块要求直接或透过其它依赖链接到模块库。一些构建工具为此有贡献支持,包括 CMake and qmake .
使用
find_package()
命令去定位所需模块组件,在
Qt6
包:
find_package(Qt6 REQUIRED COMPONENTS RemoteObjects)
另请参阅 构建采用 CMake 概述。
要配置采用 qmake 构建模块,添加模块作为值为
QT
变量在工程的 .pro 文件:
QT += remoteobjects
Qt Remote Objects 在商业许可下是可用的来自 Qt 公司 。此外,它是可用的根据 GNU LGPL (次一般公共许可) 第 3 版 ,或 GNU GPL (一般公共许可) 第 2 版 。见 Qt 许可 进一步了解细节。