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();
Другие вопросы по тегам