如何将复杂数据打包到QtDBus回复中?

时间:2012-05-31 05:09:21

标签: c++ qt dbus qtdbus

我必须在Qt中实现一个DBus服务,它必须返回一个遵循给定规范的相当复杂的数据。数据本质上是一系列经过测试的地图,数组,结构和其他变体。

我找不到方便的方法将所有这些包装到我的方法的回复中。看起来我应该能够使用QDBusArgument类来实现这个目标。例如,要创建一个字符串数组,我应该能够这样做:

QDBusArgument arg;
arg.beginArray( qMetaTypeId<QString>());
arg << "Hello" << "World";
arg.endArray();
QVariant var = arg.asVariant();

但这不起作用。我似乎需要手工精心构建QList变体。当然有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

我认为这样的事情可以帮助你

QDBusMessage msg = QDBusMessage::createSignal( ... )
QStringList strlist;
strlist << "Hello" << "World";
msg << QVariant::fromValue( strlist);
QDBusConnection::systemBus().send( msg );
  

注意:如果您使用自定义类型,则应使用Q_DECLARE_METATYPE()宏注册自定义类型。