参考文档:
在XML文件中,定义dbus的信号和槽函数,然后用qdbusxml2cpp工具生成代码。
用命令查看版本号,必须大于等于0.8,否则不支持新特性。
$ qdbusxml2cpp -V
qdbusxml2cpp version 0.8
D-Bus binding tool for Qt
XML解释如下:
name:参数名
direction: in为传入;out为传出
method: 槽函数
signal:信号函数
type:
s: string 对应于QT中的QString
b:bool 对应于QT中的bool
i:int32 对应于QT中的int
a:array 对应于QT中的QList
():struct 对应于QT中的QVariant 注:在信号函数中,不能用r表示struct。槽函数中可以。
as: 类型为string的array,对应于QT中的QStringList 或者 QList < QString >
ai: 类型为int32的array,对应于QT中的QList < int >
(ii): 类型为含有两个int32的struct。对应于QT中的QVariant
a(sss): 类型为struct的array, struct中包含三个string字段.对应于QT中的QVariantList
{sv}: 键值对 其中 key为string,value为Variant, 对应于QT中的QMap
a{sv}: 类型为键值对的数组,键值对中 key为string,value为VariantQVariantMap
复合类型必须使用annotation来指定dbus数据类型与QT数据类型的对应值
<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
<node>
<interface name="cn.cmos.profiled">
<method name="get_profile">
<arg name="profile" type="s" direction="out"/>
</method>
<method name=