QDBusConnectionInterface Class
Die Klasse „QDBusConnectionInterface“ ermöglicht den Zugriff auf den D-Bus-Bus-Daemon-Dienst. Mehr...
| Header: | #include <QDBusConnectionInterface> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS DBus) target_link_libraries(mytarget PRIVATE Qt6::DBus) |
| qmake: | QT += dbus |
| Erbt von: | QDBusAbstractInterface |
Öffentliche Typen
| enum | RegisterServiceReply { ServiceNotRegistered, ServiceRegistered, ServiceQueued } |
| enum | ServiceQueueOptions { DontQueueService, QueueService, ReplaceExistingService } |
| enum | ServiceReplacementOptions { DontAllowReplacement, AllowReplacement } |
Eigenschaften
- activatableServiceNames : QDBusReply<QStringList>
- registeredServiceNames : QDBusReply<QStringList>
Öffentliche Spielautomaten
| QDBusReply<QStringList> | activatableServiceNames() const |
| QDBusReply<bool> | isServiceRegistered(const QString &serviceName) const |
| QDBusReply<QDBusConnectionInterface::RegisterServiceReply> | registerService(const QString &serviceName, QDBusConnectionInterface::ServiceQueueOptions qoption = DontQueueService, QDBusConnectionInterface::ServiceReplacementOptions roption = DontAllowReplacement) |
| QDBusReply<QStringList> | registeredServiceNames() const |
(since 6.10) QDBusReply<QVariantMap> | serviceCredentials(const QString &serviceName) const |
| QDBusReply<QString> | serviceOwner(const QString &name) const |
| QDBusReply<uint> | servicePid(const QString &serviceName) const |
| QDBusReply<uint> | serviceUid(const QString &serviceName) const |
| QDBusReply<void> | startService(const QString &name) |
| QDBusReply<bool> | unregisterService(const QString &serviceName) |
Signale
| void | callWithCallbackFailed(const QDBusError &error, const QDBusMessage &call) |
| void | serviceRegistered(const QString &service) |
| void | serviceUnregistered(const QString &service) |
Ausführliche Beschreibung
Der D-Bus-Bus-Server-Daemon stellt eine spezielle Schnittstelle bereit: „ org.freedesktop.DBus “, über die Clients auf bestimmte Eigenschaften des Busses zugreifen können, beispielsweise auf die aktuelle Liste der verbundenen Clients. Die Klasse „QDBusConnectionInterface“ ermöglicht den Zugriff auf diese Schnittstelle.
Die häufigsten Anwendungsfälle dieser Klasse sind das Registrieren und Abmelden von Dienstnamen auf dem Bus mithilfe der Funktionen ` registerService()` und ` unregisterService()`, das Abfragen nach vorhandenen Namen mithilfe der Funktionen ` isServiceRegistered()`, ` registeredServiceNames()` und ` serviceOwner()` sowie das Empfangen von Benachrichtigungen darüber, dass sich ein Client registriert oder abgemeldet hat, über die Signale ` serviceRegistered()`, ` serviceUnregistered()` und `serviceOwnerChanged()`.
Dokumentation zu Mitgliedstypen
enum QDBusConnectionInterface::RegisterServiceReply
Die möglichen Rückgabewerte von ` registerService()`:
| Konstante | Wert | Beschreibung |
|---|---|---|
QDBusConnectionInterface::ServiceNotRegistered | 0 | Der Aufruf ist fehlgeschlagen und der Dienstname wurde nicht registriert. |
QDBusConnectionInterface::ServiceRegistered | 1 | Der Aufrufer ist nun der Eigentümer des Dienstnamens. |
QDBusConnectionInterface::ServiceQueued | 2 | Der Aufrufer hat das Flag „ QueueService “ angegeben, und der Dienst war bereits registriert, daher befinden wir uns in der Warteschlange. |
Das Signal „ serviceRegistered()“ wird ausgelöst, sobald der Dienst von dieser Anwendung übernommen wird.
enum QDBusConnectionInterface::ServiceQueueOptions
Flags zur Festlegung, wie sich eine Dienstregistrierung verhalten soll, falls der Dienstname bereits registriert ist.
| Konstante | Wert | Beschreibung |
|---|---|---|
QDBusConnectionInterface::DontQueueService | 0 | Wenn eine Anwendung einen Namen anfordert, der bereits vergeben ist, erfolgt keine Einreihung in die Warteschlange. Der Aufruf von `registeredService()` schlägt einfach fehl. Dies ist die Standardeinstellung. |
QDBusConnectionInterface::QueueService | 1 | Es wird versucht, den angeforderten Dienst zu registrieren, jedoch nicht, ihn zu ersetzen, falls eine andere Anwendung ihn bereits registriert hat. Stattdessen wird diese Anwendung einfach in die Warteschlange gestellt, bis der Versuch aufgegeben wird. In diesem Fall wird das Signal „ serviceRegistered()“ ausgelöst. |
QDBusConnectionInterface::ReplaceExistingService | 2 | Wenn eine andere Anwendung den Dienstnamen bereits registriert hat, wird versucht, ihn zu ersetzen. |
Siehe auch ` ServiceReplacementOptions`.
enum QDBusConnectionInterface::ServiceReplacementOptions
Flags zur Festlegung, ob der D-Bus-Server einer anderen Anwendung erlauben soll, einen Namen zu überschreiben, den diese Anwendung mit der Option „ ReplaceExistingService “ registriert hat.
Die möglichen Werte sind:
| Konstante | Wert | Beschreibung |
|---|---|---|
QDBusConnectionInterface::DontAllowReplacement | 0 | Anderen Anwendungen nicht erlauben, uns zu ersetzen. Der Dienst muss explizit mit ` unregisterService()` abgemeldet werden, damit eine andere Anwendung ihn übernehmen kann. Dies ist die Standardeinstellung. |
QDBusConnectionInterface::AllowReplacement | 1 | Erlaube anderen Anwendungen, uns ohne Eingreifen mit der Option „ ReplaceExistingService “ in „ registerService()“ zu ersetzen. In diesem Fall wird das Signal „ serviceUnregistered()“ ausgelöst. |
Siehe auch „ ServiceQueueOptions “.
Dokumentation zur Eigenschaft
[read-only] activatableServiceNames : QDBusReply<QStringList>
enthält die Namen der aktivierbaren Dienste
Listet alle Namen auf, die auf dem Bus aktiviert werden können.
Zugriffsfunktionen:
| QDBusReply<QStringList> | activatableServiceNames() const |
[read-only] registeredServiceNames : QDBusReply<QStringList>
enthält die registrierten Dienstnamen
Listet alle derzeit auf dem Bus registrierten Namen auf.
Zugriffsfunktionen:
| QDBusReply<QStringList> | registeredServiceNames() const |
Dokumentation der Mitgliedsfunktionen
[signal] void QDBusConnectionInterface::callWithCallbackFailed(const QDBusError &error, const QDBusMessage &call)
Dieses Signal wird ausgelöst, wenn während eines Aufrufs von ` QDBusConnection::callWithCallback()` ein Fehler auftritt. ` error ` gibt den Fehler an. ` call ` ist die Nachricht, die nicht zugestellt werden konnte.
Siehe auch QDBusConnection::callWithCallback().
[slot] QDBusReply<bool> QDBusConnectionInterface::isServiceRegistered(const QString &serviceName) const
Gibt „ true “ zurück, wenn der Dienstname „ serviceName “ derzeit registriert ist.
[slot] QDBusReply<QDBusConnectionInterface::RegisterServiceReply> QDBusConnectionInterface::registerService(const QString &serviceName, QDBusConnectionInterface::ServiceQueueOptions qoption = DontQueueService, QDBusConnectionInterface::ServiceReplacementOptions roption = DontAllowReplacement)
Fordert die Registrierung des Dienstnamens „ serviceName “ auf dem Bus an. Das Flag „ qoption “ legt fest, wie sich der D-Bus-Server verhalten soll, falls „ serviceName “ bereits registriert ist. Das Flag „ roption “ legt fest, ob der Server zulassen soll, dass eine andere Anwendung unseren registrierten Namen ersetzt.
Wenn die Registrierung des Dienstes erfolgreich ist, wird das Signal „ serviceRegistered()“ ausgesendet. Wenn wir in die Warteschlange gestellt werden, wird das Signal ausgesendet, sobald wir den Namen erhalten. Wenn „ roption “ gleich „ AllowReplacement “ ist, wird das Signal „ serviceUnregistered()“ ausgesendet, falls eine andere Anwendung diesen Namen ersetzt.
Siehe auch unregisterService().
[slot, since 6.10] QDBusReply<QVariantMap> QDBusConnectionInterface::serviceCredentials(const QString &serviceName) const
Gibt die Verbindungsdaten für den Prozess zurück, der derzeit den Busdienst „ serviceName “ hält.
Weitere Informationen finden Sie unter <https://dbus.freedesktop.org/doc/dbus-specification.html> im Abschnitt: „Method: org.freedesktop.DBus.GetConnectionCredentials“.
Diese Funktion wurde in Qt 6.10 eingeführt.
[slot] QDBusReply<QString> QDBusConnectionInterface::serviceOwner(const QString &name) const
Gibt den eindeutigen Verbindungsnamen des primären Eigentümers des Namens „ name “ zurück. Wenn der angeforderte Name keinen Eigentümer hat, wird der Fehler „ org.freedesktop.DBus.Error.NameHasNoOwner “ zurückgegeben.
[slot] QDBusReply<uint> QDBusConnectionInterface::servicePid(const QString &serviceName) const
Gibt die Unix-Prozess-ID (PID) des Prozesses zurück, der derzeit den Busdienst „ serviceName “ hält.
[signal] void QDBusConnectionInterface::serviceRegistered(const QString &service)
Dieses Signal wird vom D-Bus-Server ausgesendet, wenn der von ` service ` angegebene Bus-Dienstname (eindeutiger Verbindungsname oder bekannter Dienstname) von dieser Anwendung abgerufen wird.
Die Erlangung erfolgt, nachdem diese Anwendung über ` registerService()` einen Namen angefordert hat.
[slot] QDBusReply<uint> QDBusConnectionInterface::serviceUid(const QString &serviceName) const
Gibt die Unix-Benutzer-ID (UID) des Prozesses zurück, der derzeit die Bus-Service- serviceName hält.
[signal] void QDBusConnectionInterface::serviceUnregistered(const QString &service)
Dieses Signal wird vom D-Bus-Server ausgesendet, wenn diese Anwendung die Eigentumsrechte an dem Busdienstnamen verliert, der unter service angegeben ist.
[slot] QDBusReply<void> QDBusConnectionInterface::startService(const QString &name)
Fordert den Bus auf, den Dienst mit dem Namen „ name “ zu starten.
[slot] QDBusReply<bool> QDBusConnectionInterface::unregisterService(const QString &serviceName)
Gibt den Anspruch auf den Busdienstnamen „ serviceName “ frei, der zuvor unter registerService() registriert worden war. Falls diese Anwendung Inhaberin des Namens war, wird dieser für andere Anwendungen freigegeben, die ihn beanspruchen können. Falls der Name lediglich in der Warteschlange stand, gibt die Anwendung ihren Platz in der Warteschlange auf.
© 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.