QRemoteObjectReplica 类
一个与远程对象网络上的 Qt API 交互(但不实现)的类。 更多...
头文件 | #include <QRemoteObjectReplica> |
CMake | find_package(Qt6 REQUIRED COMPONENTS RemoteObjects) target_link_libraries(mytarget PRIVATE Qt6::RemoteObjects) |
qmake | QT += remoteobjects |
继承自 | QObject |
继承 |
公共类型
枚举 | State { Uninitialized, Default, Valid, Suspect, SignatureMismatch } |
属性
公共函数
bool | isInitialized() const |
bool | isReplicaValid() const |
QRemoteObjectNode * | node() const |
virtual void | setNode(QRemoteObjectNode *node) |
QRemoteObjectReplica::State | state() const |
bool | waitForSource(int timeout = 30000) |
信号
void | initialized() |
void | notified() |
void | stateChanged(QRemoteObjectReplica::State state, QRemoteObjectReplica::State oldState) |
详细描述
远程对象副本是另一个 QObject 的代理(称为 源 对象)。一旦初始化,副本可以被视为 源 对象的“隐写副本”。也就是说,源上 Q_PROPERTY 的任何更改,或者发出 源 的信号,都会由所有 副本 对象更新/发出。任何涉及的操作系统通过进程调度和网络安全通信延迟引入延迟。只要副本已初始化并且通信未中断,更改的接收和顺序就有保证。
isInitialized 和 state 属性(以及相应的 initialized()/stateChanged() 信号)允许确定 副本 的状态。
虽然 Qt 远程对象 (QtRO) 处理了复制品 (Replica) 的初始化和同步,但在后台有众多可能失败且在单个进程 Qt 应用程序中不会遇到的操作步骤。请参阅 复制品 的详细说明和 故障排除,了解在远程对象网络上使用这些功能时如何处理此类问题。
成员类型文档
枚举 QRemoteObjectReplica::State
此枚举类型指定了与 QRemoteObjectReplica 状态相关的各种状态代码
常量 | 值 | 描述 |
---|---|---|
QRemoteObjectReplica::Uninitialized | 0 | 动态复制品的初始值,在此处连接到源之前,关于复制品没有任何信息。 |
QRemoteObjectReplica::Default | 1 | 静态复制品的初始值,其中提供了在 .rep 文件中设置的任何默认值,以便必要时可以使用。 |
QRemoteObjectReplica::Valid | 2 | 表示复制品已连接,具有良好的属性值,可以与之交互。 |
QRemoteObjectReplica::Suspect | 3 | 如果在初始化后丢失到源的连接,将发生错误状态。 |
QRemoteObjectReplica::SignatureMismatch | 4 | 如果在源处建立了连接,但源和复制品不是从相同的 .rep(仅适用于静态复制品)派生的,将发生错误状态。 |
属性文档
node : QRemoteObjectNode*
此属性包含一个指向从其中获取此对象的节点的指针。
访问函数
QRemoteObjectNode * | node() const |
virtual void | setNode(QRemoteObjectNode *node) |
[read-only]
state : const State
返回复制品状态。
此属性保留复制品 QRemoteObjectReplica::State。
访问函数
QRemoteObjectReplica::State | state() const |
通知信号
void | stateChanged(QRemoteObjectReplica::State state, QRemoteObjectReplica::State oldState) |
成员函数文档
[signal]
void QRemoteObjectReplica::initialized()
当复制品初始化完成后,会发出此信号。初始化的复制品设置了所有属性值,但尚未发出任何属性更改通知。
另请参阅isInitialized() 和 stateChanged。
bool QRemoteObjectReplica::isInitialized() const
如果此复制品已使用来自 源 对象的数据进行初始化,则返回 true
。否则返回 false
。
另请参阅state。
bool QRemoteObjectReplica::isReplicaValid() const
如果此复制品已初始化并与托管 源 的 节点 保持有效连接,则返回 true
。否则返回 false
。
另请参阅isInitialized。
[信号]
void QRemoteObjectReplica::notified()
此信号在副本初始化后并已发出所有属性更改通知时发出。
有时将属性更改作为事件响应是有用的。例如,您可能希望通过某些属性更改显示用户通知。但是,当副本首次成为 QRemoteObjectReplica::Valid
时,也会触发此类用户通知,因为那时会发出所有属性更改信号。这并不总是令人满意,而 notified
允许开发人员区分这两种情况。
QRemoteObjectReplica::State QRemoteObjectReplica::state() const
返回副本当前 状态。
注意:属性状态的获取函数。
另请参阅:isInitialized。
[信号]
void QRemoteObjectReplica::stateChanged(QRemoteObjectReplica::State state, QRemoteObjectReplica::State oldState)
此信号在每个副本的状态在 QRemoteObjectReplica::State 之间切换时发出。
状态更改由 state 和 oldState 表示。
注意:属性 state 的通知信号。
另请参阅:state() 和 initialized。
bool QRemoteObjectReplica::waitForSource(int timeout = 30000)
负责等待副本初始化或直到超时(以毫秒为单位)的阻塞调用。如果调用完成后副本已初始化,则返回 true
,否则返回 false
。
如果 timeout 为 -1,则此函数不会超时。
另请参阅:isInitialized() 和 initialized。
© 2024 The Qt Company Ltd. 本文档内包含的贡献是各自所有者的版权。本提供的文档是根据由自由软件基金会发布的 GNU自由文档许可证版本1.3 的条款许可的。Qt及其相关标志是全球芬兰公司和/或其他国家的商标。所有其他商标均为其各自所有者的财产。