QDBusServiceWatcher Class
Die Klasse QDBusServiceWatcher ermöglicht es dem Benutzer, einen Busdienstwechsel zu beobachten. Mehr...
Kopfzeile: | #include <QDBusServiceWatcher> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS DBus) target_link_libraries(mytarget PRIVATE Qt6::DBus) |
qmake: | QT += dbus |
Vererbt: | 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) |
Detaillierte Beschreibung
Ein QDBusServiceWatcher-Objekt kann verwendet werden, um die Anwendung über einen Eigentümerwechsel eines Dienstnamens auf dem Bus zu informieren. Es hat drei Überwachungsmodi:
- Nur bei der Registrierung von Diensten.
- Nur auf die Aufhebung der Registrierung eines Dienstes achten.
- Überwachen auf jede Art von Eigentumsänderung eines Dienstes (der Standardmodus).
Neben der Erstellung oder Löschung von Diensten können diese auch den Besitzer wechseln, ohne dass eine Deregistrierungs-/Registrierungsoperation stattfindet. Daher können die Signale serviceRegistered() und serviceUnregistered() nicht ausgegeben werden, wenn dies geschieht.
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.
Wenn man einen Dienstnamen mit dem Zeichen '*' abschließt, werden alle Dienstnamen innerhalb des angegebenen Namensraums gefunden.
Zum Beispiel wird "com.example.backend1*" mit
- com.beispiel.backend1
- com.beispiel.backend1.foo
- com.beispiel.backend1.foo.bar
Teilstrings in derselben Domäne werden nicht abgeglichen, z. B. "com.example.backend12".
Siehe auch QDBusConnection.
Member Typ Dokumentation
enum QDBusServiceWatcher::WatchModeFlag
flags QDBusServiceWatcher::WatchMode
QDBusServiceWatcher unterstützt drei verschiedene Überwachungsmodi, die durch dieses Flag konfiguriert werden:
Konstante | Wert | Beschreibung |
---|---|---|
QDBusServiceWatcher::WatchForRegistration | 0x01 | nur auf die Registrierung von Diensten achten, wobei alle Signale ignoriert werden, die sich auf die Änderung anderer Diensteigenschaften beziehen. |
QDBusServiceWatcher::WatchForUnregistration | 0x02 | nur auf die Aufhebung der Registrierung des Dienstes achten, wobei alle Signale ignoriert werden, die sich auf die Änderung der Eigentümerschaft eines anderen Dienstes beziehen. |
QDBusServiceWatcher::WatchForOwnerChange | 0x03 | Watch für jede Art von Änderung des Dienstbesitzes. |
Der Typ WatchMode ist ein Typedef für QFlags<WatchModeFlag>. Er speichert eine ODER-Kombination von WatchModeFlag-Werten.
Dokumentation der Eigenschaft
[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.
[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 kostspieliger Vorgang. Wenn möglich, ändern Sie sie lieber mit addWatchedService() und removeWatchedService().
Dokumentation der Mitgliedsfunktionen
[explicit]
QDBusServiceWatcher::QDBusServiceWatcher(QObject *parent = nullptr)
Erzeugt ein QDBusServiceWatcher-Objekt. Beachten Sie, dass dieses Objekt keine Signale aussendet, solange Sie keine Verbindung mit setConnection() setzen.
Der Parameter parent wird an QObject übergeben, um das Elternteil dieses Objekts festzulegen.
QDBusServiceWatcher::QDBusServiceWatcher(const QString &service, const QDBusConnection &connection, QDBusServiceWatcher::WatchMode watchMode = WatchForOwnerChange, QObject *parent = nullptr)
Erzeugt ein QDBusServiceWatcher-Objekt und verbindet es mit der Verbindung connection. Außerdem beginnt diese Funktion sofort mit der Überwachung von watchMode auf Änderungen am Dienst service.
Der Parameter parent wird an QObject übergeben, um den Parent dieses Objekts zu setzen.
[virtual noexcept]
QDBusServiceWatcher::~QDBusServiceWatcher()
Zerstört das Objekt QDBusServiceWatcher 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 bestehenden Bindungen von watchedServices.
QDBusConnection QDBusServiceWatcher::connection() const
Gibt die QDBusConnection zurück, mit der dieses Objekt verbunden 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 sind, so dass es noch Signale geben kann, die auf die Zustellung über service warten. Diese Signale werden weiterhin ausgegeben, wenn die D-Bus-Nachrichten verarbeitet werden.
Entfernt jede bestehende Bindung von watchedServices.
Diese Funktion gibt true
zurück, wenn irgendwelche Dienste entfernt wurden.
[signal]
void QDBusServiceWatcher::serviceOwnerChanged(const QString &serviceName, const QString &oldOwner, const QString &newOwner)
Dieses Signal wird ausgegeben, wenn dieses Objekt feststellt, dass sich der Eigentümer des Dienstes serviceName geändert hat. Der Parameter oldOwner enthält den alten Besitzernamen und newOwner ist der neue Besitzer. Sowohl oldOwner als auch newOwner sind eindeutige Verbindungsnamen.
Beachten Sie, dass dieses Signal auch ausgegeben wird, wenn der Dienst serviceName registriert oder nicht registriert wurde. Wenn er registriert war, enthält oldOwner eine leere Zeichenfolge, wenn er nicht registriert war, enthält newOwner eine leere Zeichenfolge.
Wenn Sie nur herausfinden wollen, ob der Dienst registriert oder nicht registriert ist, ohne benachrichtigt zu werden, dass sich die Besitzverhältnisse geändert haben, sollten Sie die spezifischen Modi für diese Operationen verwenden. 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 immer dann ausgegeben, wenn dieses Objekt feststellt, dass der Dienst serviceName auf dem Bus verfügbar wurde.
Siehe auch serviceUnregistered() und serviceOwnerChanged().
[signal]
void QDBusServiceWatcher::serviceUnregistered(const QString &serviceName)
Dieses Signal wird ausgegeben, wenn 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)
Setzt die D-Bus-Verbindung, an die dieses Objekt angehängt ist, auf connection. Alle beobachteten Dienste werden an diese Verbindung übertragen.
Beachten Sie, dass QDBusConnection Objekte referenziert werden: QDBusServiceWatcher behält eine Referenz für diese Verbindung, solange sie besteht. Die Verbindung wird erst geschlossen, wenn der Referenzzähler auf Null sinkt, so dass sichergestellt wird, dass alle Benachrichtigungen empfangen werden, solange dieses QDBusServiceWatcher Objekt existiert.
Siehe auch connection().
void QDBusServiceWatcher::setWatchedServices(const QStringList &services)
Setzt die Liste der zu überwachenden D-Bus-Dienste auf services.
Beachten Sie, dass das Setzen der gesamten Liste bedeutet, dass alle vorherigen Regeln zur Überwachung von Diensten entfernt und neue hinzugefügt werden. Dies ist ein teurer Vorgang und sollte nach Möglichkeit vermieden werden. Verwenden Sie stattdessen addWatchedService() und removeWatchedService(), wenn möglich, um Einträge in der Liste zu manipulieren.
Entfernt jede bestehende Bindung 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().
© 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.