QDBusConnection Class

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

Header: #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, およびUsing adaptorsも参照してください

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)

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

オブジェクト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は、システムのブート全体にわたって永続的であることは保証されないので、この識別子を(ファイルシステムのような)永続ストレージに保存すべきではないことに注意してください。この識別子は、このブート・セッションの有効期間中だけ一定であることが保証されています。

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)

このQDBusConnection インスタンスを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()も参照してください

©2024 The Qt Company Ltd. 本文書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。