【问题标题】:How to pack complex data into a QtDBus reply?如何将复杂数据打包到 QtDBus 回复中?
【发布时间】:2012-06-05 08:45:28
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c++ qt dbus qtdbus


    【解决方案1】:

    我认为这样的事情应该对你有所帮助

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-26
      相关资源
      最近更新 更多