Jak wyodrębnić zwrócone dane z QDBusMessage w wywołaniu Qt DBus?

Próbuję wywołać interfejs DBus suplikanta WPA przy użyciu biblioteki klas QDBus Qt. W szczególności próbuję użyć wywołania właściwości „Get”, aby pobrać wartość właściwości „Interfejsy”.

Specyfikacja DBus (przez introspekcję) dla „Get” to:

<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>

Wydaje się dość prosty. Dwa wejścia ciągów i wyjście to wariant (są to typy DBus). Dla właściwości „Interfejsy” oczekuję, że wariant będzie tablicą ścieżek obiektów (typ DBus „ao”).

używamQDBusInterface::call() wywołać metodę DBus, która zwraca aQDBusMessage, ale nie wiem, jak wydobyć z tego dane.

QDBusMessage::arguments() zwraca aQList<QVariant>. Próbowałem różnych konwersji elementów na tej liście, próbując znaleźć moją tablicę ścieżek obiektów, ale wydaje mi się, że zamiast tego kończy się pustym łańcuchem.

QVariant::type() wygląda na to, że powinien pomóc, ale wydaje się, że zwraca tylko typQDBusMessage, co jest wyraźnie błędne. Na przykład:

// 'message' is of type QDBusMessage
qDebug() << "Argument 0 type is" << message.arguments().at(0).type();

wydruki:

Argument 0 type is QVariant::QDBusMessage

Jak wyodrębnić rzeczywiste dane wiadomości?

questionAnswers(1)

yourAnswerToTheQuestion