如何连接QDBusConnection信号

How to connect QDBusConnection signal

我已将我的 QDBusConnection 连接到一个插槽,我确定它已连接,因为连接功能 return 是的,我可以看到“已连接到插槽”登录控制台。

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>,则它无法正确连接(无法看到 "connected the slot" 句子)。

关于为什么这不能正常工作的任何线索?

添加后问题解决

qDBusRegisterMetaType<QMap<QString, QVariant>>();

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