네트워크를 통해 Qt 신호를 보내고 싶습니다.Qt의 네트워크상의 신호/슬롯 메커니즘
- 정적 방법
::fromSignal
- 를 사용하여
qMetaMethod
만들기 메소드 이름, 매개 변수 이름, 자신의 typeIds[1]
와 생성 된 메타 방법을 사용하여 값을 가져 오기 : 신호 호출을 직렬화하는 것은 Qt의 메타 형 시스템을 사용하여 매우 정직하고 있습니다. - 모든 것을 원하는 형식 (JSON, XML)으로 압축하여 보내십시오.
그러나 지금까지 직렬화 된 데이터를 사용하여 신호를 호출하는 방법을 알 수 없었습니다. QMetaObject::invokeMethod(..)
은 신호/메소드 이름을 문자열로 취합니다. 문제는 인수입니다.이 매크로는 QGenericArgument
으로 제공되어야하며 실제 유형 (문자열 또는 typeId
이 아님)과 관련 값이 필요한 Q_ARG
매크로를 사용해야 만 생성 할 수 있습니다. 또한 인수의 수는 컴파일 타임에 정의되어야하며 인수의 목록을 취하는 invokeMethod(..)
은 없습니다.
내가 누락 된 항목이 있습니까? 또는이 작업을 수행하는 더 나은/대체 방법이 있습니까?
[1]
추가 질문 : Q_DECLARE_METATYPE(..)
을 사용하여 등록 할 때 형식이 항상 동일한 형식인지 어떻게 확인합니까?
누락 된 것이 없습니다. –
어 .... 나는 신호/슬롯 메커니즘이 네트워크 전체에서 작동하도록 설계되지 않았다고 생각합니다. 나는이 점에서 나 자신이 틀렸다는 것을 알게되어 기쁘다. –
IMHO, 소켓을 기반으로하는 IPC는 키이고 변형 신호/슬롯은 단지 IPC의 다른면에서 처리되는 신호와 슬롯을 의미하는 땅콩입니다. – AlexanderVX