Я столкнулся с трудностями при извлечении значений из служебного вызова, который должен возвращать массив целых чисел. Вызов метода в файле интерфейса XML определяется следующим образом:QDbus: возврат службы QList <int>
<method name="PurpleFindBuddies">
<annotation name="org.qtproject.QtDBus.QtTypeName.Out0" value="QList<int>"/>
<arg name="accountId" type="i" direction="in" />
<arg name="screenName" type="s" direction="in" />
<arg name="buddies" type="ai" direction="out" />
</method>
qdbusxml2cpp генерирует следующий метод:
inline QDBusPendingReply<QList<int> > PurpleFindBuddies(int accountId, const QString &screenName)
{
QList<QVariant> argumentList;
argumentList << QVariant::fromValue(accountId) << QVariant::fromValue(screenName);
return asyncCallWithArgumentList(QLatin1String("PurpleFindBuddies"), argumentList);
}
Я также добавил
Q_DECLARE_METATYPE(QList<int>)
в верхней части генерируемый. h файл. И в main.cpp, я делаю следующий вызов
QDBusPendingReply<QList<int> > buddies = pidgin->PurpleFindBuddies(accountId, "[email protected]");
buddies.waitForFinished();
if (buddies.isError()) {
qDebug() << buddies.error();
return -1;
}
qDebug() << buddies.argumentAt(0).toList().size();
Когда я запускаю программу, я могу видеть из включенных отладочных, что я получаю результаты, как показано ниже, но линия QDebug() печатает 0. Я не могу понять, как правильно получить результаты.
QDBusConnectionPrivate(0x138fbc0) got message reply (async): QDBusMessage(type=MethodReturn, service=":1.135", signature="ai", contents=([Argument: ai {859}]))
Что мне не хватает? Будем очень благодарны любой помощи.