Qt D-Bus アダプタの使用
アダプターは、QObject から派生したクラスにアタッチされる特別なクラスで、D-Bus を使用して外部とのインターフェイスを提供します。アダプタは、実オブジェクトとの呼び出しを中継することを主な目的とした軽量なクラスであることを意図しており、場合によっては外部からの入力を検証したり変換したりして、実オブジェクトを保護します。
多重継承とは異なり、アダプターはどのオブジェクトにもいつでも追加することができます(削除はできません)。アダプターのもうひとつの利点は、異なるインターフェイスの同じ名前のメソッドに、似ているが同じではない機能を提供することです。これは、あるオブジェクトに標準インターフェイスの新しいバージョンを追加するときによくあるケースです。
アダプタを使うには、QDBusAbstractAdaptor を継承したクラスを作らなければなりません。このクラスは標準のQObject 由来クラスなので、Q_OBJECT マクロを宣言に記述し、ソース・ファイルをmocツールで処理する必要があります。また、このクラスには、どのインタフェースをエクスポートするかを宣言する、"D-Bus Interface"
という名前のQ_CLASSINFO エントリーが1つ含まれていなければなりません。1つのクラスにつき1つのエントリのみがサポートされます。
クラス内のパブリック・スロットはすべて、MethodCallタイプのメッセージを介してバスからアクセスできるようになります。(詳細については、Dバス・アダプタのスロットの宣言を参照してください)。クラス内のシグナルは自動的にD-Bus上でリレーされます。ただし、すべての型にシグナルやスロットのパラメータリストが許可されているわけではありません: 詳細はQt D-Bus Type Systemを参照してください。
また、Q_PROPERTY で宣言されたプロパティは、自動的に D-Bus の Properties インターフェースで公開されます。QObject プロパティ・システムでは、読み取り不可能なプロパティを許可していないため、アダプタを使用して書き込み専用のプロパティを宣言することはできません。
詳細はこちら:
- D-Busアダプタでのスロットの宣言
- D-Bus アダプタでのシグナルの宣言
- Qt Dバス型システム
- D-Bus Complex Ping Pong の例では、
complexpong.h
とcomplexpong.cpp
がQDBusAbstractAdaptor の実装を示しています。
QDBusAbstractAdaptorも参照してください 。
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。