Verwendung von Qt D-Bus Adaptoren

Adaptoren sind spezielle Klassen, die an jede von QObject abgeleitete Klasse angehängt werden und die Schnittstelle zur externen Welt über D-Bus bereitstellen. Adaptoren sind als leichtgewichtige Klassen gedacht, deren Hauptzweck darin besteht, Aufrufe an und von dem eigentlichen Objekt weiterzuleiten, möglicherweise die Eingaben aus der externen Welt zu validieren oder zu konvertieren und somit das eigentliche Objekt zu schützen.

Im Gegensatz zur Mehrfachvererbung können Adaptoren jederzeit zu jedem Objekt hinzugefügt (aber nicht entfernt) werden, was eine größere Flexibilität beim Export bestehender Klassen ermöglicht. Ein weiterer Vorteil von Adaptern ist die Bereitstellung ähnlicher, aber nicht identischer Funktionalität in gleichnamigen Methoden verschiedener Schnittstellen, ein Fall, der recht häufig vorkommt, wenn einem Objekt eine neue Version einer Standardschnittstelle hinzugefügt wird.

Um einen Adaptor zu verwenden, muss man eine Klasse erstellen, die von QDBusAbstractAdaptor erbt. Da es sich um eine von QObject abgeleitete Standardklasse handelt, muss das Makro Q_OBJECT in der Deklaration erscheinen und die Quelldatei muss mit dem moc-Tool verarbeitet werden. Die Klasse muss auch einen Q_CLASSINFO Eintrag mit dem "D-Bus Interface" Namen enthalten, der angibt, welche Schnittstelle sie exportiert. Es wird nur ein Eintrag pro Klasse unterstützt.

Jeder öffentliche Slot in der Klasse ist über den Bus über Nachrichten vom Typ MethodCall zugänglich. (Siehe Deklaration von Slots in D-Bus-Adaptern für weitere Informationen). Signale in der Klasse werden automatisch über D-Bus weitergeleitet. Allerdings sind nicht alle Typen für Signale oder Slot-Parameterlisten zugelassen: siehe The Qt D-Bus Type System für weitere Informationen.

Außerdem wird jede Eigenschaft, die mit Q_PROPERTY deklariert wird, automatisch über die Schnittstelle Properties auf D-Bus übertragen. Da das Eigenschaftssystem von QObject keine nicht lesbaren Eigenschaften zulässt, ist es nicht möglich, schreibgeschützte Eigenschaften mit Hilfe von Adaptern zu deklarieren.

Weitere Informationen:

Siehe auch QDBusAbstractAdaptor.

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.