Как извлечь возвращенные данные из QDBusMessage в вызове Qt DBus?
Я пытаюсь вызвать интерфейс DBus соискателя WPA с помощью библиотеки классов Qt QDBus. В частности, я пытаюсь использовать вызов свойства «Get» для получения значения свойства «Interfaces».
Спецификация DBus (через самоанализ) для «Get»:
<interface name="org.freedesktop.DBus.Properties">
<method name="Get">
<arg name="interface" type="s" direction="in"/>
<arg name="propname" type="s" direction="in"/>
<arg name="value" type="v" direction="out"/>
</method>
...
</interface>
Кажется достаточно простым. Ввод двух строк и вывод является вариантом (это типы DBus). Для свойства «Интерфейсы» я ожидаю, что вариант будет массивом путей к объектам (тип DBus «ao»).
я используюQDBusInterface::call()
вызвать метод DBus, который возвращаетQDBusMessage
, но я не могу понять, как извлечь из этого мои данные.
QDBusMessage::arguments()
возвращаетQList<QVariant>
, Я пробовал различные преобразования элементов в этом списке, пытаясь найти свой массив путей к объектам, но вместо этого я просто получаю пустую строку.
QVariant::type()
кажется, это должно помочь, но это только кажется, чтобы вернуть типQDBusMessage
, что явно не так. Например:
// 'message' is of type QDBusMessage
qDebug() << "Argument 0 type is" << message.arguments().at(0).type();
печатает:
Argument 0 type is QVariant::QDBusMessage
Как извлечь фактические данные сообщения?