如何连接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>>();
所以这是一个简单的错误。
我已将我的 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>>();
所以这是一个简单的错误。