QDBUS 信号传值遇到的问题。
socol 2010-08-03 08:56:03 我想通过监听devkit的DBUS消息来进行device管理,通过拦截DeviceEvent信号来获得相应信息。但是在获取ARRAY 和maps/dictionaries“Compound Types“类型时碰到问题。
devkit程序的DBUS接口:
<signal name="DeviceEvent">
<arg name="action" type="s">
<doc:doc>
<doc:summary>
<doc:para>
The OS specific event.
</doc:para>
</doc:summary>
</doc:doc>
</arg>
<arg name="subsystem" type="s">
<doc:doc>
<doc:summary>
<doc:para>
The subsystem the device belongs to.
</doc:para>
</doc:summary>
</doc:doc>
</arg>
<arg name="native_path" type="s">
<doc:doc>
<doc:summary>
<doc:para>
The OS specific native path of the device.
</doc:para>
</doc:summary>
</doc:doc>
</arg>
<arg name="device_file" type="s">
<doc:doc>
<doc:summary>
<doc:para>
The UNIX special device file for the device.
</doc:para>
</arg>
<arg name="device_file_symlinks" type="as">
<doc:doc>
<doc:summary>
<doc:para>
A list of symlinks pointing to the UNIX special device file.
</doc:para>
</doc:summary>
</doc:doc>
</arg>
<arg name="properties" type="a{ss}">
<doc:doc>
<doc:summary>
<doc:para>
A set of key/value pairs with OS specific properties for the device.
</doc:para>
</doc:summary>
</doc:doc>
</arg>
<doc:doc>
<doc:description>
<doc:para>
This signal is emitted when an event occurs on a device
such as change, add, remove.
</doc:para>
</doc:description>
</doc:doc>
</signal>
QDBUS代码:
QDBusConnection::systemBus().connect("org.freedesktop.DeviceKit",
"/org/freedesktop/DeviceKit",
"org.freedesktop.DeviceKit",
"DeviceEvent",
this,
SLOT(slotDeviceEvent(const QString &,const QString &,const QString &,const QString &, QList<QString> *, QHash<QString, QString> *)));
slotDeviceEvent()中最后两个参数加上时就拦截不到信号,删去就能拦截。可能是我传的类型不对导致,不知道最后两个参数的类型应该如何定义?