📢 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> | ||
# セッションバスへの接続を取得する。 | # セッションバスへの接続を取得する。 | ||