Qt D-Bus 型システム

D-Busは、いくつかのプリミティブと、配列や構造体におけるプリミティブのコンポジションに基づいた拡張可能な型システムを備えています。Qt D-Bus は、QDBusArgument クラスを通して、この型システムへのインターフェースを実装しており、ユーザープログラムは、バス上で実質的にすべてのC++型を送受信することができます。

プリミティブ型

プリミティブ型はQDBusArgument でネイティブにサポートされており、送受信に特別なカスタマイズは必要ありません。プリミティブ型は、 でネイティブにサポートされており、送受信に特別なカスタマイズは必要ありません。以下に、プリミティブ型と関連する C++ クラスを示します:

Qt 型D-Bus 等価型
ucharBYTE
ブールブール
ショートINT16
ushortUINT16
intINT32
uintUINT32
qlonglongINT64
クロロングUINT64
doubleDOUBLE
QString文字列
QDBusVariantバリアント
QDBusObjectPathオブジェクトパス
QDBusSignatureシグネチャ

プリミティブ型の他に、QDBusArgument は、Qt アプリケーションで広く使われていることから、2 つの非プリミティブ型もネイティブでサポートしています:QStringListQByteArray

複合型

D-Busはプリミティブ型の集約を3種類規定しており、複合型を作成することができます。それらは、ARRAYSTRUCT 、マップ/辞書です。

配列は同じ型の0個以上の要素からなる集合で、構造体はそれぞれ任意の型の固定数の要素からなる集合である。マップや辞書は要素のペアの配列として実装されるため、1つのマップに0個以上の要素を含めることができます。

型システムの拡張

独自の型をQt D-Bus で使用するには、その型を Qt のメタ型としてQ_DECLARE_METATYPE() マクロで宣言し、qDBusRegisterMetaType() 関数で登録する必要があります。ストリーミング演算子operator>>operator<< は、登録システムによって自動的に検出されます。

Qt D-Bus QMap や のような Qt のQListコンテナ・クラスで使用するために、配列やマップのテンプレート特殊化を提供しています。その他の型、特に構造体を実装した型については、演算子を明示的に実装する必要があります。

構造体、配列、マップの例については、QDBusArgument のドキュメントを参照してください。

使用される型システム

Qt D-Bus (プリミティブもユーザー定義も同様)のすべての型は、バス上ですべての型のメッセージを送受信するために使用することができます。

警告 上記のリストにない型は、typedefs を含め、リストにある型には使用できません。これにはQList<QVariant> やQMap<QString,QVariant> も含まれます。

© 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.