Подпись неожиданного ответа: получил "oa{sv}", ожидается "(oa{sv})"
Использование 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})"?
1 ответ
Я думаю, что все сообщение должно быть заключено в структуру. По крайней мере, у вас есть правильная подпись в противном случае и вы получите ответ.
arrays: []
dict entries: {}
structs: ()
Я не очень знаком с QtDbus, но, глядя на страницу класса QDbusArgument, вам, возможно, придется сделать что-то вроде этого:
argument.beginStructure();
argument << mystruct.objectpath << mystruct.array;
argument.endStructure();