qdbusxml2cpp 生成如下方法:-6ren">
gpt4 book ai didi

c++ - QDbus:服务调用返回 QList

转载 作者:太空狗 更新时间:2023-10-29 23:07:56 35 4
gpt4 key购买 nike

我在从应该返回整数数组的服务调用中检索值时遇到困难。接口(interface)xml文件中的方法调用定义为:

<method name="PurpleFindBuddies">
<annotation name="org.qtproject.QtDBus.QtTypeName.Out0" value="QList&lt;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}]) )

我错过了什么?如有任何帮助,我们将不胜感激。

最佳答案

显然一切都已正确配置。但是,在尝试检索数据时,不要执行以下操作:

qDebug() << buddies.argumentAt(0).toList().size();

我应该做的:

qDebug() << QString::number(buddies.value().size());

检索个人ID

foreach(int id, buddies.value() )
qDebug() << QString::number(id);
// or simply
QList<int> ids = buddies.value();

关于c++ - QDbus:服务调用返回 QList<int>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11166352/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com