QDbusReply не работает, вызывая функцию DBus, которая возвращает aa{sv} с Qt4?
У меня есть интерфейс dbus, который работает в d-футах, как и ожидалось, но когда я хочу вызвать его из моего приложения QT4, список имеет нулевой размер:(
Я думаю, aa{sv} можно использовать из Qt4 через QVariantList, верно?
QDBusReply< QVariantList > reply = dbusinterface.call("getUsers");
QVariantList value = reply.value();
qDebug() << "user size: " << value.size();
Может ли кто-нибудь пролить свет на это? Спасибо!
1 ответ
Решение
Хорошо. Я наконец нашел способ восстановить правильный список. Нет никаких гарантий, что это "путь", но, по крайней мере, он делает то, что должен:).
QDBusMessage result = dbusinterface.call("getUsers");
QDBusArgument v = result.arguments()[0].value<QDBusArgument>();
QVariantMap m;
QVariantList l;
v.beginArray();
while(!v.atEnd()) {
v >> m;
l.append(m);
}
qDebug() << "users count: " << l.size();