QDBusServiceWatcher Class
QDBusServiceWatcher クラスを使用すると、バスサービスの変更を監視することができます。詳細...
| ヘッダー: | #include <QDBusServiceWatcher> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS DBus) target_link_libraries(mytarget PRIVATE Qt6::DBus) |
| qmake: | QT += dbus |
| 継承元: | QObject |
パブリック型
| flags | WatchMode |
| enum | WatchModeFlag { WatchForRegistration, WatchForUnregistration, WatchForOwnerChange } |
プロパティ
- watchMode : WatchMode
- watchedServices : QStringList
パブリック関数
| QDBusServiceWatcher(QObject *parent = nullptr) | |
| QDBusServiceWatcher(const QString &service, const QDBusConnection &connection, QDBusServiceWatcher::WatchMode watchMode = WatchForOwnerChange, QObject *parent = nullptr) | |
| virtual | ~QDBusServiceWatcher() |
| void | addWatchedService(const QString &newService) |
| QBindable<QDBusServiceWatcher::WatchMode> | bindableWatchMode() |
| QBindable<QStringList> | bindableWatchedServices() |
| QDBusConnection | connection() const |
| bool | removeWatchedService(const QString &service) |
| void | setConnection(const QDBusConnection &connection) |
| void | setWatchMode(QDBusServiceWatcher::WatchMode mode) |
| void | setWatchedServices(const QStringList &services) |
| QDBusServiceWatcher::WatchMode | watchMode() const |
| QStringList | watchedServices() const |
シグナル
| void | serviceOwnerChanged(const QString &serviceName, const QString &oldOwner, const QString &newOwner) |
| void | serviceRegistered(const QString &serviceName) |
| void | serviceUnregistered(const QString &serviceName) |
詳細な説明
QDBusServiceWatcher オブジェクトを使用すると、バス上のサービス名の所有権が変更されたことをアプリケーションに通知できます。このオブジェクトには、次の 3 つの監視モードがあります。
- サービスの登録のみを監視します。
- サービスの登録解除のみを監視する。
- あらゆる種類のサービス所有権の変更を監視する(デフォルトモード)。
サービスは、作成や削除されるだけでなく、登録解除や登録操作が行われなくても所有者が変更される場合があります。そのため、そのような場合、serviceRegistered() およびserviceUnregistered() シグナルは発信されない可能性があります。
このクラスは、QDBusConnectionInterface::serviceOwnerChanged() シグナルを使用するよりも効率的です。なぜなら、このクラスでは、対象となるシグナルのみを受信できるように設定できるからです。
サービス名の末尾に '*' を付けると、指定された名前空間内のすべてのサービス名に一致します。
たとえば、「com.example.backend1*」は、
- com.example.backend1
- com.example.backend1.foo
- com.example.backend1.foo.bar
同じドメイン内の部分文字列は一致しません。つまり、「com.example.backend12」などは一致しません。
QDBusConnectionも参照してください 。
メンバ型のドキュメント
enum QDBusServiceWatcher::WatchModeFlag
flags QDBusServiceWatcher::WatchMode
QDBusServiceWatcher このフラグによって設定される、3つの異なるウォッチモードをサポートしています:
| 定数 | 値 | 説明 |
|---|---|---|
QDBusServiceWatcher::WatchForRegistration | 0x01 | サービス登録のみを監視し、他のサービスの所有権変更に関連するシグナルはすべて無視します。 |
QDBusServiceWatcher::WatchForUnregistration | 0x02 | サービスの登録解除のみを監視し、その他のサービスの所有権変更に関連するシグナルはすべて無視します。 |
QDBusServiceWatcher::WatchForOwnerChange | 0x03 | あらゆる種類のサービスの所有権の変更を監視します。 |
WatchMode 型は、QFlags<WatchModeFlag> の typedef です。これは、WatchModeFlag 値の OR 組み合わせを格納します。
プロパティのドキュメント
[bindable] watchMode : WatchMode
注:この プロパティは、QProperty のバインディングに対応しています。
このプロパティは、このQDBusServiceWatcher オブジェクトの現在の監視モードを保持します。
このプロパティのデフォルト値は QDBusServiceWatcher::WatchForOwnershipChange です。
アクセス関数:
| QDBusServiceWatcher::WatchMode | watchMode() const |
| void | setWatchMode(QDBusServiceWatcher::WatchMode mode) |
[bindable] watchedServices : QStringList
注:この プロパティは、QProperty バインディングに対応しています。
このプロパティには、監視対象のサービスのリストが格納されます。
注: setServicesWatched() を使用してこのリストを変更するのは 、処理負荷の高い操作です。可能であれば、addWatchedService() およびremoveWatchedService() を使用して変更することを推奨します。
アクセス関数:
| QStringList | watchedServices() const |
| void | setWatchedServices(const QStringList &services) |
メンバ関数のドキュメント
[explicit] QDBusServiceWatcher::QDBusServiceWatcher(QObject *parent = nullptr)
QDBusServiceWatcher オブジェクトを作成します。setConnection() を使用して接続を設定するまでは、このオブジェクトはシグナルを発信しないことに注意してください。
parent パラメータは、QObject に渡され、このオブジェクトの親を設定するために使用されます。
QDBusServiceWatcher::QDBusServiceWatcher(const QString &service, const QDBusConnection &connection, QDBusServiceWatcher::WatchMode watchMode = WatchForOwnerChange, QObject *parent = nullptr)
QDBusServiceWatcher オブジェクトを作成し、それをconnection 接続に接続します。また、この関数は、サービスservice に対するwatchMode の変更を直ちに監視し始めます。
parent パラメータは、このオブジェクトの親を設定するためにQObject に渡されます。
[virtual noexcept] QDBusServiceWatcher::~QDBusServiceWatcher()
QDBusServiceWatcher オブジェクトを破棄し、それに関連付けられているリソースをすべて解放します。
void QDBusServiceWatcher::addWatchedService(const QString &newService)
このオブジェクトが監視するサービスのリストに、newService を追加します。この関数はsetWatchedServices() よりも効率的であるため、サービスを追加する際は可能な限りこの関数を使用してください。
watchedServices に対する既存のバインディングをすべて削除します。
QDBusConnection QDBusServiceWatcher::connection() const
このオブジェクトがアタッチされているQDBusConnection を返します。
「setConnection()」も参照してください 。
bool QDBusServiceWatcher::removeWatchedService(const QString &service)
このオブジェクトが監視しているサービスのリストから、service を削除します。D-Bus 通知は非同期であるため、service に関する配信待ちのシグナルがまだ残っている可能性があることに注意してください。これらのシグナルは、D-Bus メッセージが処理されるたびに引き続き発火します。
watchedServices に対する既存のバインディングをすべて削除します。
この関数は、サービスが削除された場合、true を返します。
[signal] void QDBusServiceWatcher::serviceOwnerChanged(const QString &serviceName, const QString &oldOwner, const QString &newOwner)
このオブジェクトが、serviceName サービスに関連するサービスの所有権の変更を検出した際に、このシグナルが発信されます。oldOwner パラメータには旧所有者の名前が、newOwner には新所有者の名前が含まれます。oldOwner とnewOwner は、いずれも一意の接続名です。
なお、このシグナルは、serviceName サービスが登録または登録解除された際にも発火します。登録された場合はoldOwner に空文字列が格納され、登録解除された場合はnewOwner に空文字列が格納されます。
所有権の変更通知を受け取る必要がなく、単にサービスが登録されているか解除されているかを確認したいだけの場合は、それらの操作専用のモードの使用を検討してください。より具体的なモードを使用すると、このクラスの処理効率が向上します。
serviceRegistered() およびserviceUnregistered()も参照してください 。
[signal] void QDBusServiceWatcher::serviceRegistered(const QString &serviceName)
このオブジェクトが、バス上でサービスserviceName が利用可能になったことを検出した際に、このシグナルが発信されます。
serviceUnregistered() およびserviceOwnerChanged()も参照してください 。
[signal] void QDBusServiceWatcher::serviceUnregistered(const QString &serviceName)
このオブジェクトが、サービスserviceName がバスから登録解除され、利用できなくなったことを検出した際に、このシグナルが発信されます。
serviceRegistered() およびserviceOwnerChanged()も参照してください 。
void QDBusServiceWatcher::setConnection(const QDBusConnection &connection)
このオブジェクトが接続されている D-Bus 接続を `connection` に設定します。監視対象のすべてのサービスが、この接続に移行されます。
なお、QDBusConnection オブジェクトは参照カウント制を採用しています。つまり、QDBusServiceWatcher はこの接続が存在する限り、その参照を保持し続けます。参照カウントが 0 になるまで接続は閉じられないため、このQDBusServiceWatcher オブジェクトが存在している間は、すべての通知が確実に受信されるようになります。
connection()も参照してください 。
void QDBusServiceWatcher::setWatchedServices(const QStringList &services)
監視対象の D-Bus サービスのリストを `services` に設定します。
リスト全体を設定すると、サービス監視に関する既存のルールがすべて削除され、新しいルールが追加される点に注意してください。これは負荷の高い操作であるため、可能であれば避けるべきです。代わりに、リスト内のエントリを操作する際は、可能であれば `addWatchedService()` および `removeWatchedService()` を使用してください。
watchedServices に対する既存のバインディングをすべて削除します。
注: プロパティwatchedServices のセッター 関数です。
watchedServices()も参照してください 。
QStringList QDBusServiceWatcher::watchedServices() const
監視対象となっている D-Bus サービスのリストを返します。
注: プロパティ `watchedServices`のゲッター 関数です。
関連項目: setWatchedServices()。
© 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.