整数の配列を返すはずのサービス呼び出しから値を取得するのが困難です。インターフェース xml ファイルのメソッド呼び出しは、次のように定義されています。
<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@gmail.com");
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}]) )
私は何が欠けていますか?どんな援助でも大歓迎です。