0

使用 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})"

怎么了?“(oa{sv})”中的括号是什么?

4

1 回答 1

1

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

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

我对 QtDbus 不太熟悉,但是查看 QDbusArgument 类的页面,您可能需要执行以下操作:

argument.beginStructure();
argument << mystruct.objectpath << mystruct.array;
argument.endStructure();
于 2014-06-03T10:22:43.730 回答