Qt D-Bus アダプタの使用
アダプタは、QObject を継承した任意のクラスにアタッチされ、D-Bus を使用して外部世界とのインターフェースを提供する特別なクラスです。アダプタは軽量なクラスとして設計されており、その主な目的は、実際のオブジェクトとの間で呼び出しを中継することです。その際、外部世界からの入力の検証や変換を行い、それによって実際のオブジェクトを保護します。
多重継承とは異なり、アダプタはいつでも任意のオブジェクトに追加できます(ただし削除はできません)。これにより、既存のクラスをエクスポートする際の柔軟性が向上します。 アダプタのもう一つの利点は、異なるインターフェース内の同名のメソッドにおいて、同一ではないが類似した機能を提供できることです。これは、オブジェクトに標準インターフェースの新しいバージョンを追加する際によく見られるケースです。
アダプタを使用するには、QDBusAbstractAdaptor を継承するクラスを作成する必要があります。これは標準のQObject 派生クラスであるため、宣言にはQ_OBJECT マクロを含める必要があり、ソースファイルはmocツールで処理する必要があります。また、そのクラスには、エクスポートするインターフェースを宣言する、"D-Bus Interface" という名前のQ_CLASSINFO エントリを1つ含める必要があります。クラスごとに1つのエントリのみがサポートされます。
クラス内のパブリックスロットは、MethodCall 型のメッセージを介してバス経由でアクセス可能になります(詳細については、「D-Bus アダプタでのスロットの宣言」を参照してください)。クラス内のシグナルは、D-Bus 経由で自動的に中継されます。ただし、すべての型がシグナルやスロットのパラメータリストとして許可されているわけではありません。詳細については、「Qt D-Bus の型システム」を参照してください。
また、Q_PROPERTY で宣言されたプロパティはすべて、D-Bus の Properties インターフェースを介して自動的に公開されます。QObject のプロパティシステムでは読み取り不可のプロパティが許可されていないため、アダプタを使用して書き込み専用プロパティを宣言することはできません。
詳細情報:
- D-Bus アダプタでのスロットの宣言
- D-Busアダプタにおけるシグナルの宣言
- Qt D-Bus の型システム
- D-Busの「Complex Ping Pong」の例では、`
complexpong.h`および`complexpong.cpp`が`QDBusAbstractAdaptor`の実装を示しています。
QDBusAbstractAdaptorも参照してください 。
© 2026 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.