QDBusContext Class
Mit der Klasse QDBusContext können Slots den D-Bus-Kontext der Aufrufe bestimmen. Mehr...
Kopfzeile: | #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 |
Detaillierte Beschreibung
Wenn ein Slot in einem Objekt aufgrund einer Signalübermittlung oder aufgrund eines entfernten Methodenaufrufs aufgerufen wird, ist es manchmal notwendig, den Kontext zu kennen, in dem dies geschah. Insbesondere, wenn der Slot feststellt, dass er die Antwort zu einem späteren Zeitpunkt senden will oder wenn er mit einem Fehler antworten will, wird der Kontext benötigt.
Die Klasse QDBusContext ist eine Alternative zum Zugriff auf den Kontext, die keine Änderung des vom Qt D-Bus XML-Compiler (qdbusxml2cpp) erzeugten Codes erfordert.
QDBusContext wird verwendet, indem es von den Objekten, die mit QDBusConnection::registerObject() exportiert werden, subclassifiziert wird. 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 Verwendungen, nämlich das Senden von Fehlerantworten und das Senden von verzögerten Antworten.
Hinweis: Unterklassifizieren Sie QDBusContext und QDBusAbstractAdaptor nicht gleichzeitig. QDBusContext sollte im eigentlichen Objekt erscheinen, nicht im Adapter. Wenn es notwendig ist, den Kontext über den Adaptor-Code zu bestimmen, verwenden Sie eine öffentliche Vererbung und greifen Sie auf die Funktionen über QObject::parent() zu.
Dokumentation der Mitgliedsfunktionen
QDBusContext::QDBusContext()
Konstruiert einen leeren QDBusContext.
[noexcept]
QDBusContext::~QDBusContext()
Ein leerer Destruktor.
bool QDBusContext::calledFromDBus() const
Gibt true
zurück, wenn wir einen D-Bus-Aufruf verarbeiten. Wenn diese Funktion true
zurückgibt, sind die übrigen Funktionen dieser Klasse verfügbar.
Der Zugriff auf diese Funktionen, wenn diese Funktion false
zurückgibt, ist undefiniert und kann zu Abstürzen führen.
QDBusConnection QDBusContext::connection() const
Gibt die Verbindung zurück, von der dieser Anruf empfangen wurde.
bool QDBusContext::isDelayedReply() const
Gibt true
zurück, wenn dieser Aufruf eine verzögerte Antwort hat.
Siehe auch setDelayedReply().
const QDBusMessage &QDBusContext::message() const
Gibt die Nachricht 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 von Menschen lesbarer Text, der den Fehler erklärt.
Wenn ein Fehler gesendet wird, 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
Dies ist eine überladene Funktion.
Sendet einen Fehler type als Antwort an den Aufrufer. Der optionale Parameter msg ist ein von Menschen lesbarer Text, der den Fehler erklärt.
Wenn ein Fehler gesendet wird, werden der Rückgabewert und alle Ausgabeparameter des aufgerufenen Slots von Qt D-Bus ignoriert.
void QDBusContext::setDelayedReply(bool enable) const
Legt fest, ob dieser Aufruf eine verzögerte Antwort haben wird oder nicht.
Wenn enable false ist, wird Qt D-Bus automatisch eine Antwort an den Aufrufer generieren, sobald der aufgerufene Slot zurückkehrt.
Wenn enable wahr ist, erzeugt Qt D-Bus keine automatischen Antworten. Es wird auch den Rückgabewert des Slots und alle Ausgabeparameter ignorieren. Stattdessen ist das aufgerufene Objekt für die Speicherung der eingehenden Nachricht verantwortlich und sendet eine Antwort oder einen Fehler zu einem späteren Zeitpunkt.
Wird keine Antwort gesendet, führt dies zu einem automatischen Timeout-Fehler, der von D-Bus erzeugt wird.
Siehe auch isDelayedReply().
© 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.