首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QDbus:返回QList<int>的服务调用

QDbus:返回QList<int>的服务调用
EN

Stack Overflow用户
提问于 2012-06-23 10:38:57
回答 1查看 1.8K关注 0票数 4

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

代码语言:javascript
复制
<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生成以下方法:

代码语言:javascript
复制
 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);
}

我还添加了

代码语言:javascript
复制
Q_DECLARE_METATYPE(QList<int>)

在生成的.h文件的顶部。在main.cpp中,我进行以下调用

代码语言:javascript
复制
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。我不知道如何正确地检索结果。

代码语言:javascript
复制
QDBusConnectionPrivate(0x138fbc0) got message reply (async): QDBusMessage(type=MethodReturn, service=":1.135", signature="ai", contents=([Argument: ai {859}]) )

我遗漏了什么?任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-11 12:13:14

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

代码语言:javascript
复制
qDebug() << buddies.argumentAt(0).toList().size();

我应该做的是:

代码语言:javascript
复制
qDebug() << QString::number(buddies.value().size());

检索各个ids

代码语言:javascript
复制
foreach(int id, buddies.value() )
    qDebug() << QString::number(id);
// or simply
QList<int> ids = buddies.value();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11166352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档