QDBusConnection Class

QDBusConnectionクラスは、D-Busバス・デーモンへの接続を表します。詳細...

ヘッダー #include <QDBusConnection>
CMake: find_package(Qt6 REQUIRED COMPONENTS DBus)
target_link_libraries(mytarget PRIVATE Qt6::DBus)
qmake: QT += dbus

パブリックな型

enum BusType { SessionBus, SystemBus, ActivationBus }
flags ConnectionCapabilities
enum ConnectionCapability { UnixFileDescriptorPassing }
enum RegisterOption { ExportAdaptors, ExportScriptableSlots, ExportScriptableSignals, ExportScriptableProperties, ExportScriptableInvokables, …, ExportChildObjects }
flags RegisterOptions
enum UnregisterMode { UnregisterNode, UnregisterTree }
flags VirtualObjectRegisterOptions

パブリック関数

QDBusConnection(const QString &name)
QDBusConnection(const QDBusConnection &other)
~QDBusConnection()
QDBusPendingCall asyncCall(const QDBusMessage &message, int timeout = -1) const
QString baseService() const
QDBusMessage call(const QDBusMessage &message, QDBus::CallMode mode = QDBus::Block, int timeout = -1) const
bool callWithCallback(const QDBusMessage &message, QObject *receiver, const char *returnMethod, const char *errorMethod, int timeout = -1) const
bool connect(const QString &service, const QString &path, const QString &interface, const QString &name, QObject *receiver, const char *slot)
bool connect(const QString &service, const QString &path, const QString &interface, const QString &name, const QString &signature, QObject *receiver, const char *slot)
bool connect(const QString &service, const QString &path, const QString &interface, const QString &name, const QStringList &argumentMatch, const QString &signature, QObject *receiver, const char *slot)
QDBusConnection::ConnectionCapabilities connectionCapabilities() const
bool disconnect(const QString &service, const QString &path, const QString &interface, const QString &name, QObject *receiver, const char *slot)
bool disconnect(const QString &service, const QString &path, const QString &interface, const QString &name, const QString &signature, QObject *receiver, const char *slot)
bool disconnect(const QString &service, const QString &path, const QString &interface, const QString &name, const QStringList &argumentMatch, const QString &signature, QObject *receiver, const char *slot)
QDBusConnectionInterface *interface() const
bool isConnected() const
QDBusError lastError() const
QString name() const
QObject *objectRegisteredAt(const QString &path) const
bool registerObject(const QString &path, QObject *object, QDBusConnection::RegisterOptions options = ExportAdaptors)
bool registerObject(const QString &path, const QString &interface, QObject *object, QDBusConnection::RegisterOptions options = ExportAdaptors)
bool registerService(const QString &serviceName)
bool send(const QDBusMessage &message) const
void swap(QDBusConnection &other)
void unregisterObject(const QString &path, QDBusConnection::UnregisterMode mode = UnregisterNode)
bool unregisterService(const QString &serviceName)
QDBusConnection &operator=(const QDBusConnection &other)

静的パブリックメンバ

QDBusConnection connectToBus(QDBusConnection::BusType type, const QString &name)
QDBusConnection connectToBus(const QString &address, const QString &name)
QDBusConnection connectToPeer(const QString &address, const QString &name)
void disconnectFromBus(const QString &name)
void disconnectFromPeer(const QString &name)
QByteArray localMachineId()
QDBusConnection sessionBus()
QDBusConnection systemBus()

詳細説明

このクラスは、D-Busセッションの初期ポイントです。このクラスを使って、リモート・オブジェクトやインターフェースにアクセスしたり、リモート・シグナルをオブジェクトのスロットに接続したり、オブジェクトを登録したりすることができます。

D-Bus 接続は、connectToBus() 関数を使用して作成されます。この関数は、サーバー・デーモンへの接続を開き、最初のハンドシェーキングを行い、その接続を名前に関連付けます。同じ名前を使ってさらに接続を試みると、同じ接続が返される。

その後、disconnectFromBus ()関数を使用して接続が切断される。

一旦切断されると、connectToBus() を呼び出しても接続は再確立されないため、新しい QDBusConnection インスタンスを作成する必要があります。

最も一般的な 2 つの接続タイプの利便性として、sessionBus() 関数とsystemBus() 関数は、それぞれセッション・サーバ・デーモンとシステム・サーバ・デーモンへのオープン接続を返します。これらの接続は、最初に使用されたときにオープンされ、QCoreApplication デストラクタが実行されたときにクローズされる。

D-Busは、バス・サーバー・デーモンを必要としないピアツーピア接続もサポートしている。この機能を使用すると、2つのアプリケーションが互いに会話し、メッセージを交換することができます。これは、QDBusServer を使用して他のDバス・アプリケーションによってオープンされたアドレスをconnectToBus() 関数に渡すことで実現できる。

メンバー・タイプ・ドキュメント

enum QDBusConnection::BusType

バス接続のタイプを指定する。有効なバスタイプは以下の通り:

定数説明
QDBusConnection::SessionBus0セッション・バス。実行中のデスクトップ・セッションに関連付けられます。
QDBusConnection::SystemBus1システムバス。システム全体のプロセスと通信するために使用されます。
QDBusConnection::ActivationBus2アクティベーションバス、サービスを開始したバスの "エイリアス" です。

セッション・バスでは、同じデスクトップ・セッションを共有している、同じユーザーによる他のアプリケーションを見つけることができます(これが名前の由来です)。しかし、システム・バスでは、通常、システム全体で共有されているプロセスが見つかります。

enum QDBusConnection::ConnectionCapability
flags QDBusConnection::ConnectionCapabilities

この enum は、D-Bus 接続で使用可能な機能を記述します。

定数説明
QDBusConnection::UnixFileDescriptorPassing0x0001Unix ファイル記述子を他のプロセスに渡すことができます (QDBusUnixFileDescriptor を参照)。

ConnectionCapabilities 型は、QFlags<ConnectionCapability> の typedef です。ConnectionCapability 値の OR の組み合わせを格納する。

connectionCapabilities()も参照してください

enum QDBusConnection::RegisterOption
flags QDBusConnection::RegisterOptionsオブジェクトを登録するためのオプションを指定します。

接続にオブジェクトを登録するためのオプションを指定します。指定可能な値は以下のとおりです:

定数説明
QDBusConnection::ExportAdaptors0x01このオブジェクトで見つかったアダプタの内容をエクスポートします。
QDBusConnection::ExportScriptableSlots0x10このオブジェクトのスクリプト可能なスロットをエクスポートします。
QDBusConnection::ExportScriptableSignals0x20このオブジェクトのスクリプト可能なシグナルをエクスポートします。
QDBusConnection::ExportScriptableProperties0x40このオブジェクトのスクリプト可能なプロパティをエクスポートします。
QDBusConnection::ExportScriptableInvokables0x80このオブジェクトのスクリプト可能なインボカブルをエクスポートします。
QDBusConnection::ExportScriptableContents0xf0ExportScriptableSlots | ExportScriptableSignals | ExportScriptableProperties の省略形。
QDBusConnection::ExportNonScriptableSlots0x100このオブジェクトのスクリプト不可能なスロットをエクスポートします。
QDBusConnection::ExportNonScriptableSignals0x200このオブジェクトのスクリプト不可能なシグナルをエクスポートします。
QDBusConnection::ExportNonScriptableProperties0x400このオブジェクトのスクリプト不可能なプロパティをエクスポートします。
QDBusConnection::ExportNonScriptableInvokables0x800このオブジェクトのスクリプト不可能な起動可能ファイルをエクスポートします。
QDBusConnection::ExportNonScriptableContents0xf00ExportNonScriptableSlots|ExportNonScriptableSignals|ExportNonScriptableProperties の省略形。
QDBusConnection::ExportAllSlotsExportScriptableSlots|ExportNonScriptableSlotsこのオブジェクトのすべてのスロットをエクスポートします。
QDBusConnection::ExportAllSignalsExportScriptableSignals|ExportNonScriptableSignalsこのオブジェクトのすべてのシグナルをエクスポートします。
QDBusConnection::ExportAllPropertiesExportScriptableProperties|ExportNonScriptablePropertiesこのオブジェクトのすべてのプロパティをエクスポート
QDBusConnection::ExportAllInvokablesExportScriptableInvokables|ExportNonScriptableInvokablesこのオブジェクトのすべてのinvokablesをエクスポートします。
QDBusConnection::ExportAllContentsExportScriptableContents|ExportNonScriptableContentsこのオブジェクトのすべての内容をエクスポートします。
QDBusConnection::ExportChildObjects0x1000このオブジェクトの子オブジェクトをエクスポートする

RegisterOptions 型はQFlags<RegisterOption> の typedef です。RegisterOption 値の OR の組み合わせを格納します。

registerObject(),QDBusAbstractAdaptor,アダプタの使用も参照してください

enum QDBusConnection::UnregisterMode

オブジェクトパスの登録を解除するモード:

定数説明
QDBusConnection::UnregisterNode0このノードの登録解除のみ: 子オブジェクトの登録を解除しない
QDBusConnection::UnregisterTree1このノードとそのすべてのサブツリーの登録を解除します。

ただし、このオブジェクトがExportChildObjects オプションで登録されていた場合、UnregisterNode は子オブジェクトの登録も解除します。

メンバ関数ドキュメント

[explicit] QDBusConnection::QDBusConnection(const QString &name)

name という名前の接続にアタッチされた QDBusConnection オブジェクトを作成します。

これは接続を開きません。接続を開くには、connectToBus() を呼び出す必要があります。

QDBusConnection::QDBusConnection(const QDBusConnection &other)

other 接続のコピーを作成する。

[noexcept] QDBusConnection::~QDBusConnection()

このオブジェクトを破棄する。接続を閉じるには、disconnectFromBus() を呼び出す必要があります。

QDBusPendingCall QDBusConnection::asyncCall(const QDBusMessage &message, int timeout = -1) const

この接続を介してmessage を送信し、すぐに戻る。この関数はメソッド呼び出しにのみ適している。返信のステータスを追跡するために使用できるQDBusPendingCall 型のオブジェクトを返します。

timeout ミリ秒以内に応答がない場合、呼び出しの終了を示す自動エラーが配信されます。デフォルトのtimeout は-1であり、プロセス間通信に適した実装定義値(通常、25秒)に置き換え られる。このタイムアウトは、QDBusPendingCall::waitForFinished() での待機の上限でもある。

より使いやすい呼び出しの配置方法については、QDBusInterface::asyncCall() 関数を参照してください。

注意: アプリケーション自身によって登録されたオブジェクトへのメソッド呼び出しは、実装上の制限により、決して非同期ではありません。

QString QDBusConnection::baseService() const

このQDBusConnection オブジェクトが接続されている場合は、この接続の一意の接続名を返し、そうでない場合は空のQString を返します。

一意の接続名は、接続時に D-Bus サーバー・デーモンによって割り当てられる ":x.xxx" (x は 10 進数) 形式の文字列です。これは、バス内でこのクライアントを一意に識別する。

この関数は、ピアツーピア接続の場合、空のQString を返します。

QDBusMessage QDBusConnection::call(const QDBusMessage &message, QDBus::CallMode mode = QDBus::Block, int timeout = -1) const

このコネクション上でmessage を送信し、最大timeout ミリ秒の間、応答を待ってブロックする。この関数はメソッド呼び出しにのみ適している。この関数の返り値はリプライ・メッセージで、QDBusMessage::ReplyMessage またはQDBusMessage::ErrorMessage のタイプである。

timeout ミリ秒以内に返信がない場合、呼び出しが終了したことを示す自動的なエ ラーが送られる。デフォルトのtimeout は-1であり、プロセス間通信に適した実装定義値(通常、25秒)に置き換えられる。

よりフレンドリーな呼び出し方法については、QDBusInterface::call() 関数を参照のこと。

警告: modeQDBus::BlockWithGui の場合、この関数は応答を待つために Qt のイベントループに入ります。待ち時間の間、この関数はシグナルや他のメソッドコールをアプリケーションに送ります。そのため、call()で呼び出されるたびに、リエントランシーを処理する準備が必要です。

bool QDBusConnection::callWithCallback(const QDBusMessage &message, QObject *receiver, const char *returnMethod, const char *errorMethod, int timeout = -1) const

このコネクション上でmessage を送信し、すぐに戻る。応答を受信すると、receiver オブジェクトのメソッドreturnMethod が呼び出される。エラーが発生した場合は、代わりにメソッドerrorMethod が呼び出される。

timeout ミリ秒以内に返信を受け取らなかった場合、呼び出しの終了を示す自動エ ラーが配信される。デフォルトのtimeout は-1であり、プロセス間通信に適した実装定義の値(一般的には25秒)に置き換えられる。

この関数はメソッド呼び出しにのみ適している。パラメータ・タイプが一致し、エラーが発生しない限り、このスロットは応答とともに正確に1回呼び出されることが保証されています。

メッセージが送信された場合はtrue を返し、メッセージが送信できなかった場合は false を返します。

bool QDBusConnection::connect(const QString &service, const QString &path, const QString &interface, const QString &name, QObject *receiver, const char *slot)

service,path,interface,name パラメータで指定されたシグナルを、オブジェクトreceiver のスロットslot に接続する。引数servicepath は空でもよく、リモート・アプリケーションから (interface,name) ペアの任意のシグナルへの接続を示します。

接続に成功した場合はtrue を返す。

警告: 警告: シグナルは、パラメータが一致した場合にのみスロットに配信されます。この検証は、接続時ではなく、シグナルを受信したときにのみ行うことができます。

bool QDBusConnection::connect(const QString &service, const QString &path, const QString &interface, const QString &name, const QString &signature, QObject *receiver, const char *slot)

これはオーバーロードされた関数である。

オブジェクトreceiver のスロットslot にシグナルを接続する。以前のconnect()オーバーロードとは異なり、この関数では、signature 変数を使用して、接続するパラメータ・シグネチャを指定することができます。この関数は、このシグネチャがslot で指定されたスロットに配信できるかどうかを確認し、そうでない場合は false を返します。

接続に成功した場合はtrue を返す。

注意: この関数は、シグナルのシグネチャがスロットのパラメータと一致するかどうかを検証しますが、実際のシグナルがリモートサービスに指定されたシグネチャで存在するかどうかは検証しません。

bool QDBusConnection::connect(const QString &service, const QString &path, const QString &interface, const QString &name, const QStringList &argumentMatch, const QString &signature, QObject *receiver, const char *slot)

これはオーバーロードされた関数である。

オブジェクトreceiver のスロットslot にシグナルを接続する。以前のconnect()オーバーロードとは異なり、この関数では、signature 変数を使用して、接続するパラメータ・シグネチャを指定することができます。この関数は、このシグネチャがslot で指定されたスロットに配信できるかどうかを確認し、そうでない場合は false を返します。

argumentMatch パラメータには、マッチする文字列パラメータが順番に列挙されている。空の文字列をマッチさせるには、空だがNULLではないQString (すなわち、QString (""))を渡す必要があることに注意。NULLQString は、その位置でのマッチングをスキップする。

接続に成功した場合はtrue を返します。

注意: この関数は、シグナルのシグネチャがスロットのパラメータと一致するかどうかを検証しますが、実際のシグナルがリモートサービスに指定されたシグネチャで存在するかどうかは検証しません。

[static] QDBusConnection QDBusConnection::connectToBus(QDBusConnection::BusType type, const QString &name)

type 型の接続を既知のバスの 1 つに開き、接続名name をそれに関連付ける。その接続に関連付けられたQDBusConnection オブジェクトを返す。

[static] QDBusConnection QDBusConnection::connectToBus(const QString &address, const QString &name)

アドレスaddress のプライベート・バスへの接続をオープンし、接続名name をそれに関連付ける。その接続に関連付けられたQDBusConnection オブジェクトを返す。

[static] QDBusConnection QDBusConnection::connectToPeer(const QString &address, const QString &name)

アドレスaddress でピアツーピア接続を開き、それに接続名name を関連付ける。その接続に関連付けられたQDBusConnection オブジェクトを返す。

QDBusConnection::ConnectionCapabilities QDBusConnection::connectionCapabilities() const

バスサーバーまたはピアとネゴシエートされた、この接続の能力を返す。このQDBusConnection が接続されていない場合、この関数は能力を返しません。

bool QDBusConnection::disconnect(const QString &service, const QString &path, const QString &interface, const QString &name, QObject *receiver, const char *slot)

receiver オブジェクトのスロットslot から、servicepathinterfacename パラメータで指定されたシグナルを切断する。引数は、connect() 関数に渡されたものと同じでなければならない。

切断に成功した場合はtrue を返す。

bool QDBusConnection::disconnect(const QString &service, const QString &path, const QString &interface, const QString &name, const QString &signature, QObject *receiver, const char *slot)

これはオーバーロードされた関数である。

service,path,interface,name,signature 引数で指定されたシグナルを、オブジェクトreceiver のスロットslot から切断する。引数は、connect() 関数に渡されたものと同じでなければならない。

切断に成功した場合はtrue を返す。

bool QDBusConnection::disconnect(const QString &service, const QString &path, const QString &interface, const QString &name, const QStringList &argumentMatch, const QString &signature, QObject *receiver, const char *slot)

これはオーバーロードされた関数である。

service,path,interface,name,argumentMatch,signature 引数で指定されたシグナルを、オブジェクトreceiver のスロットslot から切断する。引数はconnect() 関数に渡されたものと同じでなければならない。

切断に成功した場合、true を返す。

[static] void QDBusConnection::disconnectFromBus(const QString &name)

name という名前のバス接続を閉じます。

同じ接続にまだQDBusConnection オブジェクトが関連付けられている場合、すべての参照が削除されるまで接続は閉じられないことに注意してください。ただし、QDBusConnection コンストラクタを使用して、それ以上参照を作成することはできません。

[static] void QDBusConnection::disconnectFromPeer(const QString &name)

名前name のピア接続を閉じる。

同じ接続に関連付けられているQDBusConnection オブジェクトがまだ存在する場合、すべての参照が削除されるまで接続は閉じられないことに注意してください。ただし、QDBusConnection コンストラクタを使用して、それ以上参照を作成することはできません。

QDBusConnectionInterface *QDBusConnection::interface() const

この接続の D-Bus サーバー・インターフェースを表すQDBusConnectionInterface オブジェクトを返します。

bool QDBusConnection::isConnected() const

このQDBusConnection オブジェクトが接続されていればtrue を返す。

QDBusError QDBusConnection::lastError() const

この接続で最後に発生したエラーを返します。

この関数は低レベル・コード用に用意されている。QDBusInterface::call() を使用している場合、エラー・コードはその返り値で報告される。

QDBusInterface およびQDBusMessageも参照のこと

[static] QByteArray QDBusConnection::localMachineId()

D-Bus システムが知っているローカル・マシン ID を返す。D-Busを実行する各ノードやホストは、ファイルシステムなどのリソースを共有している場合に、他のホストと区別するために使用できる一意の識別子を持っている。

ローカル・マシンIDは、システムのブート全体にわたって永続的であることが保証されていないため、この識別子を(ファイルシステムのような)永続ストレージに保存すべきではないことに注意してください。この識別子は、このブート・セッションが生きている間だけ一定であることが保証されています。

QString QDBusConnection::name() const

connectToBus() の name パラメータとして指定された、この接続の接続名を返す。

接続名は、バスへの実際の基礎となる接続を一意に識別するために使用することができます。単一の接続から作成されたコピーは、常に暗黙のうちに基礎となる接続を共有し、したがって同じ接続名を持つことになります。

逆に、異なるコネクション名を持つ2つのコネクションは、常に異なるバスに接続されるか、そのバス上で異なる一意名(baseService ()によって返される)を持つことになる。

connectToBus() およびdisconnectFromBus()も参照のこと

QObject *QDBusConnection::objectRegisteredAt(const QString &path) const

path で与えられたオブジェクトパスでregisterObject() に登録されたオブジェクトを返す。

bool QDBusConnection::registerObject(const QString &path, QObject *object, QDBusConnection::RegisterOptions options = ExportAdaptors)

パスpath にオブジェクトobject を登録し、登録に成功した場合はtrue を返す。options パラメータは、オブジェクトobject のどの程度を D-Bus 経由で公開するかを指定します。

パスpath にすでにオブジェクトが登録されている場合、この関数は false を返します。unregisterObject() を使用して、まず登録を解除してください。

ExportChildObjects フラグは、登録されたオブジェクトのパスと子のQObject::objectName に基づいて、D-Bus 上の子オブジェクトをエクスポートします。したがって、子オブジェクトがオブジェクト名を持っていることが重要です。

ExportChildObjects で登録されたオブジェクトの子オブジェクトとしてオブジェクトを登録することはできません。

bool QDBusConnection::registerObject(const QString &path, const QString &interface, QObject *object, QDBusConnection::RegisterOptions options = ExportAdaptors)

これはオーバーロードされた関数である。

パスpath にあるオブジェクトobject をインターフェース名interface で登録し、登録に成功した場合はtrue を返す。options パラメータは、オブジェクトobject のどの程度が D-Bus を通じて公開されるかを指定します。

この関数は既存のオブジェクトを置き換えることはありません。パスpath にすでにオブジェクトが登録されている場合、この関数は false を返します。unregisterObject() を使用して、まず登録を解除してください。

ExportChildObjects フラグは、登録されたオブジェクトのパスと子のQObject::objectName に基づいて、D-Bus 上の子オブジェクトをエクスポートします。したがって、子オブジェクトがオブジェクト名を持っていることが重要です。

ExportChildObjects で登録されたオブジェクトの子オブジェクトとしてオブジェクトを登録することはできません。

bool QDBusConnection::registerService(const QString &serviceName)

D-Bus サーバーにserviceName の登録を試み、登録に成功した場合はtrue を返す。その名前がすでに他のアプリケーションによって登録されている場合、登録は失敗する。

unregisterService() およびQDBusConnectionInterface::registerService()も参照の こと。

bool QDBusConnection::send(const QDBusMessage &message) const

応答を待たずに、このコネクション上でmessage を送信する。これは、エラー、シグナル、戻り値、および戻り値が不要な呼び出しに適しています。

メッセージが正常にキューイングされた場合はtrue を返し、そうでない場合は false を返します。

[static] QDBusConnection QDBusConnection::sessionBus()

セッション・バスで開かれたQDBusConnection オブジェクトを返します。この関数が返すオブジェクト参照は、アプリケーションが終了するまで有効で、その時点で接続は閉じられ、オブジェクトは削除されます。

[noexcept] void QDBusConnection::swap(QDBusConnection &other)

この接続をother と交換する。この操作は非常に速く、失敗することはない。

[static] QDBusConnection QDBusConnection::systemBus()

システム・バスでオープンされたQDBusConnection オブジェクトを返します。この関数が返すオブジェクト・リファレンスは、QCoreApplication のデストラクタが実行されるまで有効です。

void QDBusConnection::unregisterObject(const QString &path, QDBusConnection::UnregisterMode mode = UnregisterNode)

path で指定されたオブジェクト・パスにregisterObject() で登録されたオブジェクトの登録を解除し、modeQDBusConnection::UnregisterTree の場合は、そのすべてのサブオブジェクトの登録も解除する。

registerObject() で登録されていないオブジェクトの登録解除はできないことに注意。

bool QDBusConnection::unregisterService(const QString &serviceName)

以前にregisterService ()で登録されたサービスserviceName の登録を解除し、成功した場合はtrue を返す。

registerService() およびQDBusConnectionInterface::unregisterService()も参照のこと

QDBusConnection &QDBusConnection::operator=(const QDBusConnection &other)

このオブジェクトにother 接続のコピーを作成します。コピーの前にこのオブジェクトが参照していた接続は、自然には切断されないことに注意してください。

disconnectFromBus()も参照してください

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