适配器(adaptors)是继承自QObject派生类的一个特殊的类,向外部提供了使用D-Bus的接口。适配器是一个轻量级的类,旨在于间接调用实际对象,可以规范化或转换外部输入,因此,可以保护实际对象。
与多重继承不同,适配器可以随时加入到任何对象(移除则不行),在导出现有的类的时候具有更大的灵活性。适配器的另一个优点是可以在不同接口的同名方法中提供相似但不同的功能,当添加一个新版标准接口到对象中时,这种情形相当普遍。
为了使用适配器,必须创建一个继承QDBusAbstractAdaptor的类。既然是标准的QObject派生类,那么Q_OBJECT宏必然出现在定义中,源文件必定经moc工具处理。该类必须包含一个带有“
”字样和D-Bus Interface
接口名称的Q_CLASSINFO入口,来声明它导入了哪个接口。每个类只支持一个入口。 D-Bus
类中的任何公有槽可以通过承载MethodCall类型消息的总线访问(详见在 D-Bus 适配器中定义槽)。类中的信号自动在D-Bus总线上传递。但并不是所有类型都能写入信号和槽的参数列表:详见Qt D-Bus 类型系统。
当然,任何使用Q_PROPERTY正确声明的属性都会出现在D-Bus的属性接口中。因为QObject属性系统不允许声明不合理的属性,所以不可能使用适配器定义只写属性。