使用Qt D-Bus适配器

如何在Qt中创建和使用DBus适配器。

适配器是附加到任何QObject派生类的特殊类,并使用D-Bus提供与外部世界的接口。适配器旨在成为轻量级类,其主要目的是将调用中继到真实对象并从真实对象中继调用,可能验证或转换来自外部世界的输入,从而保护真实对象。

与多重继承不同,适配器可以在任何时候添加到任何对象(但不能移除),这为导出现有类提供了更大的灵活性。适配器的另一个优点是可以在不同接口的同名方法中提供相似但不完全相同的功能,这种情况在向对象添加新版本的标准接口时可能相当常见。

为了使用适配器,必须创建一个继承自QDBusAbstractAdaptor的类。由于这是一个标准的QObject派生类,Q_OBJECT宏必须出现在声明中,并且源文件必须使用moc工具进行处理。该类还必须包含一个带有"D-Bus Interface"名称的Q_CLASSINFO条目,声明它导出的接口。每个类只支持一个条目。

类中的任何公共槽都可以通过总线访问,通过MethodCall类型的消息。(有关更多信息,请参见在D-Bus适配器中声明槽)。类中的信号将自动通过D-Bus中继。然而,并非所有类型都允许作为信号或槽的参数列表:有关更多信息,请参见Qt D-Bus类型系统

此外,任何使用Q_PROPERTY声明的属性将自动通过D-Bus上的Properties接口暴露。由于QObject属性系统不允许不可读的属性,因此无法使用适配器声明只写属性。

更多信息:

另请参阅

QDBusAbstractAdaptor