QRemoteObjectReplica Class
Remote Object 네트워크에서 Qt API와 상호작용하지만(구현하지는 않는) 클래스입니다. 더 보기...
| 헤더: | #include <QRemoteObjectReplica> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS RemoteObjects) target_link_libraries(mytarget PRIVATE Qt6::RemoteObjects) |
| qmake: | QT += remoteobjects |
| 상속: | QObject |
| 상속받는 항목: |
공개 유형
| enum | 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) |
상세 설명
원격 객체 복제본(Remote Object Replica)은 다른 객체( QObject, 소스 객체라고 함)에 대한 객체 참조( QObject ) 프록시입니다. 초기화가 완료되면 복제본은 소스 객체의 "잠재적 복사본"으로 간주될 수 있습니다. 즉, 소스 객체의 속성( Q_PROPERTY )에 대한 모든 변경 사항이나 소스 객체가 발산하는 신호는 모든 복제본 객체에 의해 업데이트되거나 발산됩니다. 지연 시간은 관련된 모든 운영 체제의 프로세스 스케줄링과 네트워크 통신 지연으로 인해 발생합니다. 리플리카가 초기화되어 있고 통신이 중단되지 않는 한, 변경 사항의 수신 및 순서는 보장됩니다.
isInitialized 및 state 속성(그리고 이에 대응하는 initialized()/stateChanged() 시그널)을 통해 Replica의 상태를 확인할 수 있습니다.
Qt Remote Objects (QtRO)는 Replica 객체의 초기화 및 동기화를 처리하지만, 단일 프로세스 Qt 애플리케이션에서는 발생하지 않는 수많은 단계가 백그라운드에서 진행되며, 이 과정에서 오류가 발생할 수 있습니다. 원격 객체 네트워크 사용 시 이러한 문제를 처리하는 방법에 대한 조언은 ‘문제 해결’ 섹션을 참조하십시오.
멤버 유형 문서
enum QRemoteObjectReplica::State
이 열거형 유형은 QRemoteObjectReplica 의 각 주와 관련된 다양한 상태 코드를 지정합니다:
| 상수 | 상수 | 설명 |
|---|---|---|
QRemoteObjectReplica::Uninitialized | 0 | DynamicReplica의 초기 값으로, 소스에 연결하기 전에는 레플리카에 대한 정보가 전혀 없는 상태를 나타냅니다. |
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 : 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
이 레플리카가 Source 객체의 데이터로 초기화된 경우 true 를 반환합니다. 그렇지 않은 경우 false 를 반환합니다.
state()도 참조하십시오 .
bool QRemoteObjectReplica::isReplicaValid() const
이 레플리카가 초기화되었고 소스(Source)를 호스팅하는 마스터( node )와 유효한 연결을 맺고 있는 경우 true 를 반환합니다. 그렇지 않은 경우 false 를 반환합니다.
isInitialized()도 참조하십시오 .
[signal] void QRemoteObjectReplica::notified()
이 신호는 레플리카가 초기화되고 모든 속성 변경 알림이 전송된 후에 발생합니다.
속성 변경을 이벤트로 처리하는 것이 유용한 경우가 있습니다. 예를 들어, 특정 속성 변경이 발생했을 때 사용자 알림을 표시하고자 할 수 있습니다. 하지만 이 경우, 복제본이 처음 ` QRemoteObjectReplica::Valid` 상태가 되었을 때도 모든 속성 변경 신호가 동시에 발송되므로 사용자 알림이 트리거될 수 있습니다. 이는 항상 바람직한 것은 아니며, ` notified `를 사용하면 개발자가 이 두 가지 경우를 구분할 수 있습니다.
QRemoteObjectReplica::State QRemoteObjectReplica::state() const
레플리카의 현재 상태( state )를 반환합니다.
참고: state 속성에 대한게터 함수입니다.
참조: isInitialized.
[signal] void QRemoteObjectReplica::stateChanged(QRemoteObjectReplica::State state, QRemoteObjectReplica::State oldState)
이 신호는 리플리카의 상태가 QRemoteObjectReplica::State 사이를 전환할 때마다 발생합니다.
상태 변경은 state 및 oldState 로 표현됩니다.
참고: 속성 state 에 대한알림 신호입니다.
state() 및 initialized()도 참조하십시오 .
bool QRemoteObjectReplica::waitForSource(int timeout = 30000)
레플리카가 초기화될 때까지 또는 ` timeout `(ms 단위)가 만료될 때까지 대기하는 차단 호출입니다. 호출이 완료될 때 레플리카가 초기화된 경우 ` true `를 반환하고, 그렇지 않은 경우 ` false `를 반환합니다.
timeout 가 -1인 경우, 이 함수는 타임아웃되지 않습니다.
isInitialized() 및 initialized()도 참조하십시오 .
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.