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 型システム」を参照してください。
また、Q_PROPERTY で宣言されたプロパティは、自動的に D-Bus の Properties インタフェースで公開されます。QObject プロパティ・システムは読み取り不可能なプロパティを許可していないため、アダプタを使用して書き込み専用のプロパティを宣言することはできません。
詳細はこちら:
- D-Busアダプタでのスロットの宣言
- D-Bus アダプタでのシグナルの宣言
- Qt D-Bus 型システム
- D-Bus Complex Ping Pong の例では、
complexpong.h
とcomplexpong.cpp
がQDBusAbstractAdaptor の実装を示しています。
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.