使用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;?
中的括号是什么?答案 0 :(得分:1)
我认为整个消息需要包含在结构中。至少你有正确的签名,并得到回应。
arrays: []
dict entries: {}
structs: ()
我对QtDbus并不熟悉,但是查看QDbusArgument类的页面,你可能必须做这样的事情:
argument.beginStructure();
argument << mystruct.objectpath << mystruct.array;
argument.endStructure();