QDBusAbstractInterface Class
Die Klasse „QDBusAbstractInterface“ ist die Basisklasse für alle D-Bus-Schnittstellen in der Bindung „ Qt D-Bus “ und ermöglicht den Zugriff auf Remote-Schnittstellen. Mehr...
| Header: | #include <QDBusAbstractInterface> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS DBus) target_link_libraries(mytarget PRIVATE Qt6::DBus) |
| qmake: | QT += dbus |
| Erbt von: | QObject |
| Vererbt an: |
Öffentliche Funktionen
| virtual | ~QDBusAbstractInterface() |
| QDBusPendingCall | asyncCall(const QString &method, Args &&... args) |
| QDBusPendingCall | asyncCallWithArgumentList(const QString &method, const QList<QVariant> &args) |
| QDBusMessage | call(const QString &method, Args &&... args) |
| QDBusMessage | call(QDBus::CallMode mode, const QString &method, Args &&... args) |
| QDBusMessage | callWithArgumentList(QDBus::CallMode mode, const QString &method, const QList<QVariant> &args) |
| bool | callWithCallback(const QString &method, const QList<QVariant> &args, QObject *receiver, const char *returnMethod, const char *errorMethod) |
| bool | callWithCallback(const QString &method, const QList<QVariant> &args, QObject *receiver, const char *slot) |
| QDBusConnection | connection() const |
| QString | interface() const |
(since 6.7) bool | isInteractiveAuthorizationAllowed() const |
| bool | isValid() const |
| QDBusError | lastError() const |
| QString | path() const |
| QString | service() const |
(since 6.7) void | setInteractiveAuthorizationAllowed(bool enable) |
| void | setTimeout(int timeout) |
| int | timeout() const |
Ausführliche Beschreibung
Generierte Code-Klassen leiten sich ebenfalls von `QDBusAbstractInterface` ab; alle hier beschriebenen Methoden gelten auch für generierte Code-Klassen. Zusätzlich zu den hier beschriebenen bieten generierte Code-Klassen Mitgliedsfunktionen für die Remote-Methoden, die eine Überprüfung der korrekten Parameter und Rückgabewerte zur Kompilierungszeit sowie eine Typanpassung der Eigenschaften und eine Parameteranpassung der Signale ermöglichen.
Siehe auch „Der QDBus-Compiler “ und „ QDBusInterface “.
Dokumentation zu den Mitgliedsfunktionen
[virtual noexcept] QDBusAbstractInterface::~QDBusAbstractInterface()
Gibt die Ressourcen dieses Objekts frei.
template <typename... Args> QDBusPendingCall QDBusAbstractInterface::asyncCall(const QString &method, Args &&... args)
Ruft die Methode „ method “ dieser Schnittstelle auf und übergibt „ args “ an die Methode. Alle „ args “ müssen in „ QVariant “ konvertierbar sein.
Die Parameter für „ call “ werden über D-Bus als Eingabeargumente an die Remote-Funktion übergeben. Das zurückgegebene „ QDBusPendingCall “-Objekt kann verwendet werden, um Informationen über die Antwort abzurufen.
Es kann wie folgt verwendet werden:
QDBusPendingCall pcall = interface->asyncCall("GetAPIVersion"_L1);
auto watcher = new QDBusPendingCallWatcher(pcall, this);
QObject::connect(watcher, &QDBusPendingCallWatcher::finished, this,
[&](QDBusPendingCallWatcher *w) {
QString value = retrieveValue();
QDBusPendingReply<int> reply(*w);
QDBusPendingCall pcall;
if (reply.argumentAt<0>() >= 14)
pcall = interface->asyncCall("ProcessWorkUnicode"_L1, value);
else
pcall = interface->asyncCall("ProcessWork"_L1, "UTF-8"_L1, value.toUtf8());
w = new QDBusPendingCallWatcher(pcall);
QObject::connect(w, &QDBusPendingCallWatcher::finished, this,
&Abstract_DBus_Interface::callFinishedSlot);
});Dieses Beispiel veranschaulicht den Funktionsaufruf mit 0, 1 und 2 Parametern und zeigt die jeweils übergebenen unterschiedlichen Parametertypen (der erste Aufruf von ` "ProcessWorkUnicode" ` enthält eine Unicode-Zeichenkette, der zweite Aufruf von ` "ProcessWork" ` enthält eine Zeichenkette und ein Byte-Array). Siehe ` call()` für dasselbe Beispiel bei blockierenden (synchronen) Aufrufen.
Hinweis: Vor Qt 5.14 akzeptierte diese Funktion maximal acht (8) Argumente.
Hinweis: Methodenaufrufe an lokale ` QDBusServer`s sind aufgrund von Implementierungsbeschränkungen niemals asynchron.
Siehe auch ` asyncCallWithArgumentList()`.
QDBusPendingCall QDBusAbstractInterface::asyncCallWithArgumentList(const QString &method, const QList<QVariant> &args)
Ruft die durch „ method “ angegebene Remote-Methode dieser Schnittstelle auf und übergibt dabei „ args “ als Argumente. Diese Funktion gibt ein „ QDBusPendingCall “-Objekt zurück, mit dem sich der Status der Antwort verfolgen und auf deren Inhalt zugegriffen werden kann, sobald diese eingetroffen ist.
Normalerweise sollten Sie Aufrufe mit ` asyncCall()` durchführen.
Hinweis: Methodenaufrufe an Objekte, die von der Anwendung selbst registriert wurden, sind aufgrund von Implementierungsbeschränkungen niemals asynchron.
Hinweis: Diese Funktion ist threadsicher.
template <typename... Args> QDBusMessage QDBusAbstractInterface::call(const QString &method, Args &&... args)
Ruft die Methode „ method “ dieser Schnittstelle auf und übergibt „ args “ an die Methode. Alle „ args “ müssen in „ QVariant “ konvertierbar sein.
Die Parameter für „ call “ werden über D-Bus als Eingabeargumente an die Remote-Funktion übergeben. Ausgabeargumente werden in der Antwort von „ QDBusMessage “ zurückgegeben. Handelt es sich bei der Antwort um eine Fehlermeldung, wird „ lastError()“ ebenfalls auf den Inhalt der Fehlermeldung gesetzt.
Die Verwendung erfolgt wie folgt:
QString value = retrieveValue();
QDBusMessage reply;
QDBusReply<int> api = interface->call("GetAPIVersion"_L1);
if (api >= 14)
reply = interface->call("ProcessWorkUnicode"_L1, value);
else
reply = interface->call("ProcessWork"_L1, "UTF-8"_L1, value.toUtf8());Dieses Beispiel veranschaulicht den Funktionsaufruf mit 0, 1 und 2 Parametern und zeigt die jeweils übergebenen unterschiedlichen Parametertypen (der erste Aufruf von ` "ProcessWorkUnicode" ` enthält eine Unicode-Zeichenkette, der zweite Aufruf von ` "ProcessWork" ` enthält eine Zeichenkette und ein Byte-Array). Siehe ` asyncCall()` für dasselbe Beispiel bei nicht blockierenden (asynchronen) Aufrufen.
Hinweis: Vor Qt 5.14 akzeptierte diese Funktion maximal acht (8) Argumente.
Siehe auch callWithArgumentList().
template <typename... Args> QDBusMessage QDBusAbstractInterface::call(QDBus::CallMode mode, const QString &method, Args &&... args)
Ruft die Methode „ method “ dieser Schnittstelle auf und übergibt „ args “ an die Methode. Alle „ args “-Objekte müssen in „ QVariant “-Objekte konvertierbar sein.
Ist ` mode ` gleich ` NoWaitForReply`, kehrt diese Funktion unmittelbar nach dem Aufruf zurück, ohne auf eine Antwort der Remote-Methode zu warten. Andernfalls gibt ` mode ` an, ob diese Funktion die Qt-Ereignisschleife aktivieren soll, während sie auf das Eintreffen der Antwort wartet.
Wenn diese Funktion zur Erwartung der Antwort wieder in die Qt-Ereignisschleife eintritt, werden Benutzereingaben ausgeschlossen. Während des Wartens kann sie Signale und andere Methodenaufrufe an Ihre Anwendung weiterleiten. Daher muss diese darauf vorbereitet sein, eine Reentrancy zu handhaben, wann immer ein Aufruf mit `call()` erfolgt.
Hinweis: Vor Qt 5.14 akzeptierte diese Funktion maximal acht (8) Argumente.
Dies ist eine überladene Funktion.
Siehe auch ` callWithArgumentList()`.
QDBusMessage QDBusAbstractInterface::callWithArgumentList(QDBus::CallMode mode, const QString &method, const QList<QVariant> &args)
Ruft die durch „ method “ angegebene Remote-Methode dieser Schnittstelle auf und verwendet dabei „ args “ als Argumente. Diese Funktion gibt die als Antwort empfangene Nachricht zurück, bei der es sich entweder um eine normale „ QDBusMessage::ReplyMessage “ (die einen Erfolg anzeigt) oder um „ QDBusMessage::ErrorMessage “ (falls der Aufruf fehlgeschlagen ist) handeln kann. Der Parameter „ mode “ legt fest, wie dieser Aufruf erfolgen soll.
Wenn der Aufruf erfolgreich ist, wird ` lastError()` zurückgesetzt; andernfalls enthält es den Fehler, den dieser Aufruf verursacht hat.
Normalerweise sollten Sie Aufrufe mit ` call()` ausführen.
Warnung: Wenn Sie ` UseEventLoop` verwenden, muss Ihr Code auf mögliche Reentrancy vorbereitet sein: Andere Methodenaufrufe und Signale können vor der Rückkehr dieser Funktion übermittelt werden, ebenso wie andere in der Warteschlange stehende Qt-Signale und -Ereignisse.
Hinweis: Diese Funktion ist threadsicher.
bool QDBusAbstractInterface::callWithCallback(const QString &method, const QList<QVariant> &args, QObject *receiver, const char *returnMethod, const char *errorMethod)
Ruft die durch ` method ` angegebene Remote-Methode dieser Schnittstelle auf und verwendet dabei ` args ` als Argumente. Diese Funktion kehrt unmittelbar nach dem Einreihen des Aufrufs zurück. Die Antwort der Remote-Funktion wird an die Methode ` returnMethod ` des Objekts ` receiver` übermittelt. Tritt ein Fehler auf, wird stattdessen die Methode ` errorMethod ` des Objekts ` receiver ` aufgerufen.
Diese Funktion gibt „ true “ zurück, wenn die Einreihung erfolgreich war. Dies bedeutet jedoch nicht, dass der ausgeführte Aufruf erfolgreich war. Bei einem Fehler wird die Funktion „ errorMethod “ aufgerufen. Wenn die Einreihung fehlgeschlagen ist, gibt diese Funktion „ false “ zurück, und es wird kein Slot aufgerufen.
Die Funktion „ returnMethod “ muss als Parameter die vom Funktionsaufruf zurückgegebenen Typen enthalten. Optional kann sie einen „ QDBusMessage “-Parameter als letzten oder einzigen Parameter haben. Die Funktion „ errorMethod “ muss als einzigen Parameter einen „ QDBusError “ enthalten.
Hinweis: Methodenaufrufe an Objekte, die von der Anwendung selbst registriert wurden, sind aufgrund von Implementierungsbeschränkungen niemals asynchron.
Siehe auch „ QDBusError “ und „ QDBusMessage “.
bool QDBusAbstractInterface::callWithCallback(const QString &method, const QList<QVariant> &args, QObject *receiver, const char *slot)
Diese Funktion ist veraltet. Bitte verwenden Sie die überladene Version.
Ruft die durch ` method ` angegebene Remote-Methode auf dieser Schnittstelle auf und verwendet dabei ` args ` als Argumente. Diese Funktion kehrt unmittelbar nach dem Einreihen des Aufrufs zurück. Die Antwort der Remote-Funktion sowie alle von ihr ausgegebenen Fehler werden an den Slot ` slot ` des Objekts ` receiver` übermittelt.
Diese Funktion gibt „ true “ zurück, wenn die Einreihung erfolgreich war; dies bedeutet jedoch nicht, dass der Aufruf erfolgreich war. Bei einem Fehler wird der Slot mit einer Fehlermeldung aufgerufen. „ lastError()“ wird unter diesen Umständen nicht gesetzt.
Dies ist eine überladene Funktion.
Siehe auch „ QDBusError “ und „ QDBusMessage “.
QDBusConnection QDBusAbstractInterface::connection() const
Gibt die Verbindung zurück, mit der diese Schnittstelle verknüpft ist.
QString QDBusAbstractInterface::interface() const
Gibt den Namen dieser Schnittstelle zurück.
[since 6.7] bool QDBusAbstractInterface::isInteractiveAuthorizationAllowed() const
Gibt an, ob der Aufrufer bei asynchronen Aufrufen bereit ist, auf eine interaktive Autorisierung zu warten.
Der Standardwert ist „ false “.
Diese Funktion wurde in Qt 6.7 eingeführt.
Siehe auch ` setInteractiveAuthorizationAllowed()` und ` QDBusMessage::setInteractiveAuthorizationAllowed()`.
bool QDBusAbstractInterface::isValid() const
Gibt „ true “ zurück, wenn es sich um eine gültige Referenz auf ein Remote-Objekt handelt. Es gibt „ false “ zurück, wenn beim Erstellen dieser Schnittstelle ein Fehler aufgetreten ist (beispielsweise, wenn die Remote-Anwendung nicht existiert).
Hinweis: Beim Umgang mit Remote-Objekten lässt sich beim Erstellen eines ` QDBusInterface` nicht immer feststellen, ob das Objekt existiert.
QDBusError QDBusAbstractInterface::lastError() const
Gibt den Fehler zurück, der bei der letzten Operation aufgetreten ist, oder einen ungültigen Fehler, falls bei der letzten Operation kein Fehler aufgetreten ist.
QString QDBusAbstractInterface::path() const
Gibt den Objektpfad zurück, dem diese Schnittstelle zugeordnet ist.
QString QDBusAbstractInterface::service() const
Gibt den Namen des Dienstes zurück, dem diese Schnittstelle zugeordnet ist.
[since 6.7] void QDBusAbstractInterface::setInteractiveAuthorizationAllowed(bool enable)
Legt fest, ob der Aufrufer bei asynchronen Aufrufen bereit ist, auf eine interaktive Autorisierung zu warten.
Wenn „ enable “ auf „ true “ gesetzt ist, setzen die für asynchrone Aufrufe über diese Schnittstelle generierten D-Bus-Nachrichten das Flag „ ALLOW_INTERACTIVE_AUTHORIZATION “.
Dieses Flag ist nur dann sinnvoll, wenn nicht privilegierter Code einen Methodenaufruf mit höheren Berechtigungen aufruft und ein Autorisierungs-Framework eingesetzt wird, das eine möglicherweise interaktive Autorisierung zulässt.
Der Standardwert ist „ false “.
Diese Funktion wurde in Qt 6.7 eingeführt.
Siehe auch ` isInteractiveAuthorizationAllowed()` und ` QDBusMessage::setInteractiveAuthorizationAllowed()`.
void QDBusAbstractInterface::setTimeout(int timeout)
Legt das Timeout in Millisekunden für alle zukünftigen DBus-Aufrufe an timeout fest. -1 bedeutet das Standard-DBus-Timeout (normalerweise 25 Sekunden).
Siehe auch ` timeout()`.
int QDBusAbstractInterface::timeout() const
Gibt den aktuellen Wert des Timeouts in Millisekunden zurück. -1 bedeutet das Standard-DBus-Timeout (normalerweise 25 Sekunden).
Siehe auch ` setTimeout()`.
© 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.