QDBusServiceWatcher Class
Mit der Klasse „QDBusServiceWatcher“ kann der Benutzer Änderungen an einem Bus-Dienst überwachen. Mehr...
| Überschrift: | #include <QDBusServiceWatcher> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS DBus) target_link_libraries(mytarget PRIVATE Qt6::DBus) |
| qmake: | QT += dbus |
| Erbt von: | QObject |
Öffentliche Typen
| flags | WatchMode |
| enum | WatchModeFlag { WatchForRegistration, WatchForUnregistration, WatchForOwnerChange } |
Eigenschaften
- watchMode : WatchMode
- watchedServices : QStringList
Öffentliche Funktionen
| 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 |
Signale
| void | serviceOwnerChanged(const QString &serviceName, const QString &oldOwner, const QString &newOwner) |
| void | serviceRegistered(const QString &serviceName) |
| void | serviceUnregistered(const QString &serviceName) |
Ausführliche Beschreibung
Ein QDBusServiceWatcher-Objekt kann verwendet werden, um die Anwendung über einen Eigentümerwechsel eines Dienstnamens auf dem Bus zu benachrichtigen. Es verfügt über drei Überwachungsmodi:
- Nur Überwachung der Dienstregistrierung.
- Nur Überwachung der Deaktivierung von Diensten.
- Überwachung auf jede Art von Änderung des Service-Eigentümers (Standardmodus).
Dienstnamen können nicht nur erstellt oder gelöscht werden, sondern auch den Eigentümer wechseln, ohne dass dabei ein Abmelde- oder Anmeldevorgang stattfindet. Daher werden die Signale „ serviceRegistered()“ und „ serviceUnregistered()“ in diesem Fall möglicherweise nicht ausgelöst.
Diese Klasse ist effizienter als die Verwendung des Signals `QDBusConnectionInterface::serviceOwnerChanged()`, da sie es ermöglicht, nur die Signale zu empfangen, an denen die Klasse interessiert ist.
Beendet man einen Dienstnamen mit dem Zeichen „*“, werden alle Dienstnamen innerhalb des angegebenen Namensraums abgeglichen.
Beispielsweise passt „com.example.backend1*“ auf
- com.example.backend1
- com.example.backend1.foo
- com.example.backend1.foo.bar
Teilstrings innerhalb derselben Domäne werden nicht berücksichtigt, z. B. „com.example.backend12“.
Siehe auch QDBusConnection.
Dokumentation zu Mitgliedstypen
enum QDBusServiceWatcher::WatchModeFlag
flags QDBusServiceWatcher::WatchMode
QDBusServiceWatcher unterstützt drei verschiedene Überwachungsmodi, die über dieses Flag konfiguriert werden:
| Konstant | Wert | Beschreibung |
|---|---|---|
QDBusServiceWatcher::WatchForRegistration | 0x01 | Beobachtung nur der Dienstregistrierung, wobei alle Signale im Zusammenhang mit anderen Änderungen der Dienstinhaberschaft ignoriert werden. |
QDBusServiceWatcher::WatchForUnregistration | 0x02 | Beobachtung ausschließlich der Abmeldung von Diensten, wobei alle Signale im Zusammenhang mit anderen Änderungen der Dienstinhaberschaft ignoriert werden. |
QDBusServiceWatcher::WatchForOwnerChange | 0x03 | Beobachtet jede Art von Änderung der Dienstverantwortung. |
Der Typ „WatchMode“ ist ein typedef für QFlags<WatchModeFlag>. Er speichert eine ODER-Kombination von WatchModeFlag-Werten.
Eigenschaftsdokumentation
[bindable] watchMode : WatchMode
Hinweis: Diese Eigenschaft unterstützt „ QProperty “-Bindungen.
Diese Eigenschaft enthält den aktuellen Überwachungsmodus für dieses „ QDBusServiceWatcher “-Objekt.
Der Standardwert für diese Eigenschaft ist QDBusServiceWatcher::WatchForOwnershipChange.
Zugriffsfunktionen:
| QDBusServiceWatcher::WatchMode | watchMode() const |
| void | setWatchMode(QDBusServiceWatcher::WatchMode mode) |
[bindable] watchedServices : QStringList
Hinweis: Diese Eigenschaft unterstützt „ QProperty “-Bindungen.
Diese Eigenschaft enthält die Liste der überwachten Dienste.
Hinweis: Das Ändern dieser Liste mit `setServicesWatched()` ist ein ressourcenintensiver Vorgang. Wenn möglich, sollten Sie die Liste stattdessen über ` addWatchedService()` und ` removeWatchedService()` ändern.
Zugriffsfunktionen:
| QStringList | watchedServices() const |
| void | setWatchedServices(const QStringList &services) |
Dokumentation zu den Member-Funktionen
[explicit] QDBusServiceWatcher::QDBusServiceWatcher(QObject *parent = nullptr)
Erstellt ein QDBusServiceWatcher-Objekt. Beachten Sie, dass dieses Objekt keine Signale aussendet, solange Sie keine Verbindung mit ` setConnection()` hergestellt haben.
Der Parameter ` parent ` wird an ` QObject ` übergeben, um den übergeordneten Knoten dieses Objekts festzulegen.
QDBusServiceWatcher::QDBusServiceWatcher(const QString &service, const QDBusConnection &connection, QDBusServiceWatcher::WatchMode watchMode = WatchForOwnerChange, QObject *parent = nullptr)
Erstellt ein QDBusServiceWatcher-Objekt und fügt es der Verbindung „ connection “ hinzu. Außerdem beginnt diese Funktion sofort damit, auf Änderungen an „ watchMode “ für den Dienst „ service “ zu achten.
Der Parameter „ parent “ wird an „ QObject “ übergeben, um den übergeordneten Knoten dieses Objekts festzulegen.
[virtual noexcept] QDBusServiceWatcher::~QDBusServiceWatcher()
Löscht das „ QDBusServiceWatcher “-Objekt und gibt alle damit verbundenen Ressourcen frei.
void QDBusServiceWatcher::addWatchedService(const QString &newService)
Fügt newService zur Liste der Dienste hinzu, die von diesem Objekt überwacht werden sollen. Diese Funktion ist effizienter als setWatchedServices() und sollte nach Möglichkeit zum Hinzufügen von Diensten verwendet werden.
Entfernt alle vorhandenen Bindungen von watchedServices.
QDBusConnection QDBusServiceWatcher::connection() const
Gibt den „ QDBusConnection “ zurück, an den dieses Objekt angehängt ist.
Siehe auch ` setConnection()`.
bool QDBusServiceWatcher::removeWatchedService(const QString &service)
Entfernt „ service “ aus der Liste der Dienste, die von diesem Objekt überwacht werden. Beachten Sie, dass D-Bus-Benachrichtigungen asynchron erfolgen, sodass möglicherweise noch Signale bezüglich „ service “ zur Zustellung anstehen. Diese Signale werden weiterhin ausgesendet, sobald die D-Bus-Nachrichten verarbeitet werden.
Entfernt alle vorhandenen Bindungen zu „ watchedServices “.
Diese Funktion gibt „ true “ zurück, falls Dienste entfernt wurden.
[signal] void QDBusServiceWatcher::serviceOwnerChanged(const QString &serviceName, const QString &oldOwner, const QString &newOwner)
Dieses Signal wird immer dann ausgelöst, wenn dieses Objekt feststellt, dass eine Änderung des Dienstinhabers in Bezug auf den Dienst „ serviceName “ stattgefunden hat. Der Parameter „ oldOwner “ enthält den Namen des bisherigen Inhabers, und „ newOwner “ ist der Name des neuen Inhabers. Sowohl „ oldOwner “ als auch „ newOwner “ sind eindeutige Verbindungsnamen.
Beachten Sie, dass dieses Signal auch immer dann ausgegeben wird, wenn der Dienst „ serviceName “ registriert oder deregistriert wurde. Bei einer Registrierung enthält „ oldOwner “ eine leere Zeichenkette, bei einer Deregistrierung hingegen enthält „ newOwner “ eine leere Zeichenkette.
Wenn Sie lediglich feststellen möchten, ob der Dienst registriert oder abgemeldet ist, ohne über eine Änderung der Eigentumsverhältnisse benachrichtigt zu werden, sollten Sie die spezifischen Modi für diese Vorgänge in Betracht ziehen. Diese Klasse ist effizienter, wenn Sie die spezifischeren Modi verwenden.
Siehe auch serviceRegistered() und serviceUnregistered().
[signal] void QDBusServiceWatcher::serviceRegistered(const QString &serviceName)
Dieses Signal wird ausgegeben, sobald dieses Objekt feststellt, dass der Dienst „ serviceName “ auf dem Bus verfügbar ist.
Siehe auch serviceUnregistered() und serviceOwnerChanged().
[signal] void QDBusServiceWatcher::serviceUnregistered(const QString &serviceName)
Dieses Signal wird ausgegeben, sobald dieses Objekt feststellt, dass der Dienst serviceName vom Bus abgemeldet wurde und nicht mehr verfügbar ist.
Siehe auch „ serviceRegistered()“ und „ serviceOwnerChanged()“.
void QDBusServiceWatcher::setConnection(const QDBusConnection &connection)
Legt die D-Bus-Verbindung, an die dieses Objekt angehängt ist, auf „ connection “ fest. Alle überwachten Dienste werden auf diese Verbindung übertragen.
Beachten Sie, dass Objekte vom Typ „ QDBusConnection “ referenzgezählt werden: „ QDBusServiceWatcher “ behält eine Referenz auf diese Verbindung, solange diese existiert. Die Verbindung wird erst geschlossen, wenn die Referenzanzahl auf Null sinkt. Dadurch wird sichergestellt, dass alle Benachrichtigungen empfangen werden, solange dieses „ QDBusServiceWatcher “-Objekt existiert.
Siehe auch connection().
void QDBusServiceWatcher::setWatchedServices(const QStringList &services)
Legt die Liste der überwachten D-Bus-Dienste auf „ services “ fest.
Beachten Sie, dass das Festlegen der gesamten Liste bedeutet, dass alle bisherigen Regeln zur Überwachung von Diensten entfernt und neue hinzugefügt werden. Dies ist ein ressourcenintensiver Vorgang und sollte nach Möglichkeit vermieden werden. Verwenden Sie stattdessen nach Möglichkeit addWatchedService() und removeWatchedService(), um Einträge in der Liste zu bearbeiten.
Entfernt alle vorhandenen Zuordnungen von „ watchedServices “.
Hinweis: Setter -Funktion für die Eigenschaft ` watchedServices`.
Siehe auch watchedServices().
QStringList QDBusServiceWatcher::watchedServices() const
Gibt die Liste der D-Bus-Dienste zurück, die überwacht werden.
Hinweis: Getter -Funktion für die Eigenschaft „watchedServices“.
Siehe auch „ 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.