Подпись неожиданного ответа: получил "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();
Другие вопросы по тегам