0

C++/QtDBus の使用。次のように記述された関数への DBus 呼び出しからの応答を取得しようとしています。

object, dict PullAll(string targetfile, dict filters).

typedef QPair< QDBusObjectPath, QVariantMap > Transfer; 次のように定義されたタイプを登録しました (qDBusRegisterMetaType) QDBusPendingCallWatcher:

QDBusPendingReply<Transfer> reply = *pwatcher;

エラーが発生します:

予期しない応答署名: 取得済み"oa{sv}"、予期された"(oa{sv})"

どうしたの?「(oa{sv})」の括弧は何ですか?

4

1 に答える 1

1

メッセージ全体を構造体でラップする必要があると思います。少なくとも、それ以外の場合は適切な署名があり、応答を得ています。

arrays: []
dict entries: {}
structs: ()

私は QtDbus にはあまり詳しくありませんが、QDbusArgument クラスのページを見ると、次のようにする必要があるかもしれません。

argument.beginStructure();
argument << mystruct.objectpath << mystruct.array;
argument.endStructure();
于 2014-06-03T10:22:43.730 に答える