2014-04-07 4 views
0

C++/QtDBus 사용. 나는 (qDBusRegisterMetaType)를 등록예기치 않은 응답 서명 : got "oa {sv}", 예상 "(oa {sv})"

object, dict PullAll(string targetfile, dict filters). 

같은 유형의 정의 : 같은 내가 DBUS 통화에서 응답을 얻으려고 설명 함수에 내가 뭘 typedef QPair< QDBusObjectPath, QVariantMap > Transfer; 핸들러 QDBusPendingCallWatcher에서 :

QDBusPendingReply<Transfer> reply = *pwatcher; 

오류가 발생합니다.

Unexpected reply signature: got "oa{sv}" , expected "(oa{sv})"

무엇이 잘못 되었습니까? "(oa {sv})"의 괄호는 무엇입니까?

+0

을 어쩌면'OA {SV} '배열로 싸여 있습니까? – JB0x2D1

답변

1

전체 메시지를 구조체에 래핑해야한다고 생각합니다. 적어도 당신은 그렇지 않으면 적절한 서명을 가지고 있으며 응답을 얻고 있습니다.

arrays: [] 
dict entries: {} 
structs:() 

난 당신이 이런 식으로 뭔가해야 할, QtDbus에 익숙한 아니에요,하지만 QDbusArgument 클래스의 페이지에서 찾고 :

argument.beginStructure(); 
argument << mystruct.objectpath << mystruct.array; 
argument.endStructure(); 
관련 문제