QDBusContext Class
Die Klasse „QDBusContext“ ermöglicht es Slots, den D-Bus-Kontext der Aufrufe zu ermitteln. Mehr dazu...
| Header: | #include <QDBusContext> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS DBus) target_link_libraries(mytarget PRIVATE Qt6::DBus) |
| qmake: | QT += dbus |
Öffentliche Funktionen
| QDBusContext() | |
| ~QDBusContext() | |
| bool | calledFromDBus() const |
| QDBusConnection | connection() const |
| bool | isDelayedReply() const |
| const QDBusMessage & | message() const |
| void | sendErrorReply(const QString &name, const QString &msg = QString()) const |
| void | sendErrorReply(QDBusError::ErrorType type, const QString &msg = QString()) const |
| void | setDelayedReply(bool enable) const |
Ausführliche Beschreibung
Wenn ein Slot in einem Objekt aufgrund einer Signalübermittlung oder eines Remote-Methodenaufrufs aufgerufen wird, ist es manchmal notwendig, den Kontext zu kennen, in dem dies geschehen ist. Insbesondere wenn der Slot feststellt, dass er die Antwort zu einem späteren Zeitpunkt senden möchte oder wenn er mit einem Fehler antworten möchte, wird der Kontext benötigt.
Die Klasse `QDBusContext` ist eine Alternative für den Zugriff auf den Kontext, bei der der vom XML-Compiler „Qt D-Bus “ (qdbusxml2cpp) generierte Code nicht geändert werden muss.
QDBusContext wird verwendet, indem man die über ` QDBusConnection::registerObject()` exportierten Objekte damit unterklassifiziert. Das folgende Beispiel veranschaulicht die Verwendung:
class MyObject: public QObject,
protected QDBusContext
{
Q_OBJECT
QDBusConnection conn;
QDBusMessage msg;
//...
protected slots:
void process();
public slots:
void methodWithError();
QString methodWithDelayedReply();
};
void MyObject::methodWithError()
{
sendErrorReply(QDBusError::NotSupported,
"The method call 'methodWithError()' is not supported");
}
QString MyObject::methodWithDelayedReply()
{
conn = connection();
msg = message();
setDelayedReply(true);
QMetaObject::invokeMethod(this, &MyObject::process, Qt::QueuedConnection);
return QString();
}Das Beispiel veranschaulicht die beiden typischen Anwendungsfälle: das Senden von Fehlerantworten und das Senden von verzögerten Antworten.
Hinweis: Erstellen Sie keine Unterklassen von QDBusContext und QDBusAbstractAdaptor gleichzeitig. QDBusContext sollte im eigentlichen Objekt vorkommen, nicht im Adapter. Wenn es im Adaptercode notwendig ist, den Kontext zu ermitteln, verwenden Sie eine öffentliche Vererbung und greifen Sie über QObject::parent() auf die Funktionen zu.
Dokumentation der Mitgliedsfunktionen
QDBusContext::QDBusContext()
Erstellt einen leeren QDBusContext.
[noexcept] QDBusContext::~QDBusContext()
Ein leerer Destruktor.
bool QDBusContext::calledFromDBus() const
Gibt „ true “ zurück, wenn ein D-Bus-Aufruf verarbeitet wird. Wenn diese Funktion „ true “ zurückgibt, stehen die übrigen Funktionen dieser Klasse zur Verfügung.
Der Zugriff auf diese Funktionen, wenn diese Funktion false zurückgibt, ist nicht definiert und kann zu Abstürzen führen.
QDBusConnection QDBusContext::connection() const
Gibt die Verbindung zurück, über die dieser Aufruf eingegangen ist.
bool QDBusContext::isDelayedReply() const
Gibt „ true “ zurück, wenn dieser Aufruf eine verzögerte Antwort liefert.
Siehe auch setDelayedReply().
const QDBusMessage &QDBusContext::message() const
Gibt die Meldung zurück, die diesen Aufruf ausgelöst hat.
void QDBusContext::sendErrorReply(const QString &name, const QString &msg = QString()) const
Sendet einen Fehler name als Antwort an den Aufrufer. Der optionale Parameter „ msg “ ist ein für Menschen lesbarer Text, der den Fehler erklärt.
Wird ein Fehler gesendet, werden der Rückgabewert und alle Ausgabeparameter des aufgerufenen Slots von ` Qt D-Bus` ignoriert.
void QDBusContext::sendErrorReply(QDBusError::ErrorType type, const QString &msg = QString()) const
Sendet einen Fehler type als Antwort an den Aufrufer. Der optionale Parameter ` msg ` ist ein für Menschen lesbarer Text, der den Fehler erklärt.
Wird ein Fehler gesendet, werden der Rückgabewert und alle Ausgabeparameter des aufgerufenen Slots von ` Qt D-Bus` ignoriert.
Dies ist eine überladene Funktion.
void QDBusContext::setDelayedReply(bool enable) const
Legt fest, ob dieser Aufruf eine verzögerte Antwort erhält oder nicht.
Ist „ enable “ auf „false“ gesetzt, generiert „ Qt D-Bus “ bei Bedarf automatisch eine Antwort an den Aufrufer, sobald der aufgerufene Slot zurückkehrt.
Ist „ enable “ auf „true“ gesetzt, generiert „ Qt D-Bus “ keine automatischen Antworten. Außerdem werden der Rückgabewert des Slots sowie alle Ausgabeparameter ignoriert. Stattdessen ist das aufgerufene Objekt dafür verantwortlich, die eingehende Nachricht zu speichern und zu einem späteren Zeitpunkt eine Antwort oder eine Fehlermeldung zu senden.
Wird keine Antwort gesendet, löst D-Bus automatisch einen Timeout-Fehler aus.
Siehe auch isDelayedReply().
© 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.