【问题标题】:How to connect QDBusConnection signal如何连接 QDBusConnection 信号
【发布时间】:2016-09-15 14:54:07
【问题描述】:

我已将我的QDBusConnection 连接到一个插槽,并且我确定它已连接,因为连接函数返回 True,并且我可以在控制台上看到“connected to slot”登录。

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&lt;QString&gt;,则它无法正确连接(看不到“已连接插槽”语句)。

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

【问题讨论】:

    标签: qt signals-slots dbus


    【解决方案1】:

    添加后问题已解决

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

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

    【讨论】:

      猜你喜欢
      • 2021-01-15
      • 2012-02-23
      • 2018-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多