意外回复签名:得到“oa {sv}”,预期“(oa {sv})”

时间:2014-04-07 11:45:34

标签: qt dbus bluez obex qtdbus

使用C ++ / QtDBus。 我试图从DBus调用函数回复函数描述为:

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

我注册了(qDBusRegisterMetaType)一个定义为:typedef QPair< QDBusObjectPath, QVariantMap > Transfer;的类型 在QDBusPendingCallWatcher处理程序中,我正在执行:

QDBusPendingReply<Transfer> reply = *pwatcher;

我收到错误:

  

意外回复签名:获得"oa{sv}",预期"(oa{sv})"

出了什么问题? &#34;(oa {sv})&#34;?

中的括号是什么?

1 个答案:

答案 0 :(得分:1)

我认为整个消息需要包含在结构中。至少你有正确的签名,并得到回应。

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

我对QtDbus并不熟悉,但是查看QDbusArgument类的页面,你可能必须做这样的事情:

argument.beginStructure();
argument << mystruct.objectpath << mystruct.array;
argument.endStructure();