📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

286行目: 286行目:


== QtとD-Bus ==
== QtとD-Bus ==
==== Qt D-Busライブラリ ====
Qt D-Busライブラリは、D-Busプロトコルを使用してプロセス間通信を行うUnix向けライブラリであり、D-Busの基本APIをカプセル化して実装したものである。<br>
これは、Qtのシグナル・スロット機構で拡張されたインターフェイスを提供する。<br>
<br>
Qt D-Busライブラリを使用するには、<code>QtDBus</code>をインクルードする必要がある。<br>
<syntaxhighlight lang="c++">
#include <QtDBus>
</syntaxhighlight>
<br>
Qtプロジェクトファイルを使用する場合は、変数<code>QT</code>に<code>dbus</code>オプションを追加する必要がある。<br>
QT += dbus
<br>
==== QtとD-Busのデータ型 ====
QtとD-Busは、<code>QDBusArgument</code>クラスを通して、ネイティブな型をサポートしている。<br>
また、<code>QDBusArgument</code>クラスは、ネイティブな型の他に非ネイティブ型である<code>QStringList</code>クラスと<code>QByteArray</code>クラスもサポートする。<br>
<center>
{| class="wikitable" | style="background-color:#fefefe;"
|-
! style="background-color:#66CCFF;" | Qtのデータ型
! style="background-color:#66CCFF;" | D-Busのデータ型
|-
| uchar || BYTE
|-
| bool || BOOLEAN
|-
| short || INT16
|-
| ushort || UINT16
|-
| int || INT32
|-
| uint || UINT32
|-
| qlonglong || INT64
|-
| qulonglong || UNIT64
|-
| double || DOUBLE
|-
| QString || STRING
|-
| QDBusVariant || VARIANT
|-
| QDBusObjectPath || OBJECT_PATH
|-
| QDBusSignature || SIGNATURE
|}
</center>
<br>
==== qdbuscpp2xmlコマンド ====
<code>qdbuscpp2xml</code>コマンドは、<code>QObject</code>クラスを継承したクラスのヘッダファイル等をパースして、D-Busインターフェースファイルを生成する。<br>
スロットの引数が<code>const</code>で宣言されている場合は入力、非<code>const</code>の場合は出力とみなされることがある。<br>
qdbuscpp2xml <入力オプション> <QObjectクラスを継承したクラスを定義したヘッダファイル> <出力オプション> <生成するD-Busインターフェースファイル名>
例. qdbuscpp2xml -M SampleHelper.h -O org.qt.sample.xml
<br>
qdbuscpp2xmlコマンドのオプションを、以下に示す。<br>
* -p または -s または -m
*: スクリプト化されたアトリビュート(<code>-p</code>オプション)、シグナル(<code>-s</code>オプション)、メソッド(スロット関数)(<code>-m</code>オプション)のみがパースされる。
* -P または -S または -M
*: 全てのアトリビュート(<code>-P</code>オプション)、シグナル(<code>-S</code>オプション)、メソッド(スロット関数)(<code>-M</code>オプション)を解析する。
* -a
*: スクリプト化された内容を全て出力する。(<code>-psm</code>オプションと等価)
* -A
*: 全てのコンテンツを出力する。(<code>-PSM</code>オプションと等価)
* -o <生成するD-Busインターフェースファイル名> または -O <生成するD-Busインターフェースファイル名>
*: D-Busインターフェースファイルを生成する。
<br>
==== サンプルコード ====
以下の例では、Qtにおいて、D-Busを使用したメッセージの送受信を行っている。<br>
以下の例では、Qtにおいて、D-Busを使用したメッセージの送受信を行っている。<br>
# セッションバスへの接続を取得する。
# セッションバスへの接続を取得する。