我必须在Qt中实现一个DBus服务,它必须返回一个遵循给定规范的相当复杂的数据。数据本质上是一系列经过测试的地图,数组,结构和其他变体。
我找不到方便的方法将所有这些包装到我的方法的回复中。看起来我应该能够使用QDBusArgument
类来实现这个目标。例如,要创建一个字符串数组,我应该能够这样做:
QDBusArgument arg;
arg.beginArray( qMetaTypeId<QString>());
arg << "Hello" << "World";
arg.endArray();
QVariant var = arg.asVariant();
但这不起作用。我似乎需要手工精心构建QList
变体。当然有更好的方法吗?
答案 0 :(得分:0)
我认为这样的事情可以帮助你
QDBusMessage msg = QDBusMessage::createSignal( ... )
QStringList strlist;
strlist << "Hello" << "World";
msg << QVariant::fromValue( strlist);
QDBusConnection::systemBus().send( msg );
注意:如果您使用自定义类型,则应使用Q_DECLARE_METATYPE()宏注册自定义类型。