Как извлечь возвращенные данные из 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

Как извлечь фактические данные сообщения?

Ответы на вопрос(1)

Ваш ответ на вопрос