如何连接QDBusConnection信号

时间:2016-09-15 14:54:07

标签: qt signals-slots dbus

我已将QDBusConnection连接到插槽,我确定它已连接,因为连接功能返回True,我可以看到“连接到插槽”登录控制台。

if ( m_bus.connect("com.mypage.MyService"
        , "/MyRadio"
        , "org.freedesktop.DBus.Properties"
        , "PropertiesChanged"
        , this
        , SLOT(updateProperties(QString, QMap<QString, QVariant>))
                  )) {
        qWarning() << "connected to slot";
    }

但我无法从相应的dbus服务获得任何更新。我正在用dbus-monitor观看服务,我确信信号正在发出。

信号具有以下类型:

      <signal name="PropertiesChanged">
          <arg type="s" name="interface_name"/>
          <arg type="a{sv}" name="changed_properties"/>
          <arg type="as" name="invalidated_properties"/>
      </signal>

如果我向Slot添加第三个参数,如QList<QString>,那么它无法正确连接(“连接插槽”句子无法看到)。

有关为什么这种方法无法正常工作的任何线索?

1 个答案:

答案 0 :(得分:1)

添加

后问题解决了
qDBusRegisterMetaType<QMap<QString, QVariant>>();

所以这毕竟是一个简单的错误。