2

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

我找不到一种方便的方法将所有这些都打包到我的方法的回复中。看来我应该可以为此使用该QDBusArgument课程。例如,要创建一个字符串数组,我应该可以这样做:

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

但这不起作用。看来我需要煞费苦心地QList手动构造 s 的变体。肯定有更好的方法吗?

4

1 回答 1

0

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

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

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

于 2013-01-17T14:19:57.450 回答