このページでは

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 }

パブリック関数

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 つのアプリケーションが相互に通信し、メッセージを交換することができます。これは、別の D-Bus アプリケーションがQDBusServer を使用して開いたアドレスをconnectToBus() 関数に渡すことで実現できます。

メンバ型のドキュメント

enum QDBusConnection::BusType

バス接続のタイプを指定します。有効なバスタイプは次のとおりです:

定数値説明
QDBusConnection::SessionBus0実行中のデスクトップセッションに関連付けられたセッションバス
QDBusConnection::SystemBus1システムバス。システム全体のプロセスとの通信に使用される
QDBusConnection::ActivationBus2アクティベーションバス。サービスを起動したバスの「別名」

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

enum QDBusConnection::ConnectionCapability
flags QDBusConnection::ConnectionCapabilities

この列挙型は、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このオブジェクトのすべての呼び出し可能オブジェクトをエクスポートする
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 を返します。

一意の接続名とは、「:x.xxx」(x は 10 進数の桁)という形式の文字列であり、接続時に D-Bus サーバーデーモンによって割り当てられます。これは、バス上でこのクライアントを一意に識別します。

この関数は、ピアツーピア接続の場合、空の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() 関数を参照してください。

警告: mode がQDBus::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 に接続します。引数service およびpath は空にすることができ、その場合は、任意のリモートアプリケーションから、(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(""))。QString がnullの場合、その位置での照合はスキップされます。

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

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

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

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

type 型の接続を、既知のバスのいずれかに対して開き、その接続に接続名「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 ` から、パラメータ `service`、`path`、`interface `、および `name ` で指定されたシグナルを切断します。引数は、関数 `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)

オブジェクト `receiver` のスロット `slot ` から、パラメータ `service`、`path`、`interface`、`name`、および `signature ` で指定された信号を切断します。引数は、関数 `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)

オブジェクト `receiver` のスロット `slot ` から、パラメータ `service`、`path`、`interface`、`name`、`argumentMatch`、および `signature ` で指定された信号を切断します。引数は、関数 `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はシステムの再起動後も維持されることが保証されていないため、この識別子をファイルシステムなどの永続ストレージに保存すべきではありません。この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)

オブジェクト `object ` をパス `path ` に登録し、登録に成功した場合は `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)

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

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

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

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

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

bool QDBusConnection::registerService(const QString &serviceName)

serviceName をD-Busサーバーに登録しようと試み、登録に成功した場合は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()で登録されたオブジェクトの登録を解除します。また、mode がQDBusConnection::UnregisterTree の場合、そのすべてのサブオブジェクトの登録も解除します。

なお、registerObject() によって登録されていないオブジェクトは登録解除できないことに注意してください。

bool QDBusConnection::unregisterService(const QString &serviceName)

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

registerService() およびQDBusConnectionInterface::unregisterService()も参照してください 。

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

このオブジェクト内に、接続「other 」のコピーを作成します。なお、コピー作成前にこのオブジェクトが参照していた接続は、自動的に切断されることはありません。

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

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