我已将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>
,那么它无法正确连接(“连接插槽”句子无法看到)。
有关为什么这种方法无法正常工作的任何线索?
答案 0 :(得分:1)
添加
后问题解决了qDBusRegisterMetaType<QMap<QString, QVariant>>();
所以这毕竟是一个简单的错误。