QDBusMessage Class

Die Klasse QDBusMessage repräsentiert eine Nachricht, die über den D-Bus gesendet oder empfangen wird. Mehr...

Kopfzeile: #include <QDBusMessage>
CMake: find_package(Qt6 REQUIRED COMPONENTS DBus)
target_link_libraries(mytarget PRIVATE Qt6::DBus)
qmake: QT += dbus

Öffentliche Typen

enum MessageType { MethodCallMessage, SignalMessage, ReplyMessage, ErrorMessage, InvalidMessage }

Öffentliche Funktionen

QDBusMessage()
QDBusMessage(const QDBusMessage &other)
~QDBusMessage()
QList<QVariant> arguments() const
bool autoStartService() const
QDBusMessage createErrorReply(const QDBusError &error) const
QDBusMessage createErrorReply(QDBusError::ErrorType type, const QString &msg) const
QDBusMessage createErrorReply(const QString &name, const QString &msg) const
QDBusMessage createReply(const QList<QVariant> &arguments = QList<QVariant>()) const
QDBusMessage createReply(const QVariant &argument) const
QString errorMessage() const
QString errorName() const
QString interface() const
bool isDelayedReply() const
bool isInteractiveAuthorizationAllowed() const
bool isReplyRequired() const
QString member() const
QString path() const
QString service() const
void setArguments(const QList<QVariant> &arguments)
void setAutoStartService(bool enable)
void setDelayedReply(bool enable) const
void setInteractiveAuthorizationAllowed(bool enable)
QString signature() const
void swap(QDBusMessage &other)
QDBusMessage::MessageType type() const
QDBusMessage &operator<<(const QVariant &arg)
QDBusMessage &operator=(const QDBusMessage &other)

Statische öffentliche Mitglieder

QDBusMessage createError(const QDBusError &error)
QDBusMessage createError(QDBusError::ErrorType type, const QString &msg)
QDBusMessage createError(const QString &name, const QString &msg)
QDBusMessage createMethodCall(const QString &service, const QString &path, const QString &interface, const QString &method)
QDBusMessage createSignal(const QString &path, const QString &interface, const QString &name)
QDBusMessage createTargetedSignal(const QString &service, const QString &path, const QString &interface, const QString &name)

Detaillierte Beschreibung

Dieses Objekt kann jede der vier verschiedenen Arten von Nachrichten darstellen (MessageType), die auf dem Bus auftreten können:

  • Methodenaufrufe
  • Methodenrückgabewerte
  • Signalaussendungen
  • Fehlercodes

Objekte dieses Typs werden mit den statischen Funktionen createError(), createMethodCall() und createSignal() erzeugt. Verwenden Sie die Funktion QDBusConnection::send(), um die Nachrichten zu senden.

Dokumentation der Mitgliedstypen

enum QDBusMessage::MessageType

Die möglichen Nachrichtentypen:

KonstanteWertBeschreibung
QDBusMessage::MethodCallMessage1eine Nachricht, die einen ausgehenden oder eingehenden Methodenaufruf darstellt
QDBusMessage::SignalMessage4eine Nachricht, die eine ausgehende oder eingehende Signalausgabe darstellt
QDBusMessage::ReplyMessage2eine Meldung, die die Rückgabewerte eines Methodenaufrufs darstellt
QDBusMessage::ErrorMessage3eine Nachricht, die eine Fehlerbedingung als Antwort auf einen Methodenaufruf darstellt
QDBusMessage::InvalidMessage0eine ungültige Nachricht: diese wird bei vom D-Bus empfangenen Nachrichten nie gesetzt

Dokumentation der Mitgliedsfunktionen

QDBusMessage::QDBusMessage()

Konstruiert ein leeres, ungültiges QDBusMessage-Objekt.

Siehe auch createError(), createMethodCall(), und createSignal().

QDBusMessage::QDBusMessage(const QDBusMessage &other)

Konstruiert eine Kopie des durch other angegebenen Objekts.

Hinweis: QDBusMessage-Objekte werden gemeinsam genutzt. Änderungen, die an der Kopie vorgenommen werden, wirken sich auch auf das Original aus. Siehe setDelayedReply() für weitere Informationen.

[noexcept] QDBusMessage::~QDBusMessage()

Legt das Objekt ab und gibt alle Ressourcen frei, die gehalten wurden.

QList<QVariant> QDBusMessage::arguments() const

Gibt die Liste der Argumente zurück, die gesendet werden sollen oder vom D-Bus empfangen wurden.

Siehe auch setArguments().

bool QDBusMessage::autoStartService() const

Gibt das Autostart-Flag zurück, wie es von setAutoStartService() gesetzt wurde. Standardmäßig ist dieses Flag true, was bedeutet, dass Qt D-Bus einen Dienst automatisch startet, wenn er nicht bereits läuft.

Siehe auch setAutoStartService().

[static] QDBusMessage QDBusMessage::createError(const QDBusError &error)

Konstruiert eine neue DBus-Nachricht, die die angegebene error repräsentiert.

[static] QDBusMessage QDBusMessage::createError(QDBusError::ErrorType type, const QString &msg)

Konstruiert eine neue DBus-Meldung für den Fehlertyp type unter Verwendung der Meldung msg. Gibt die DBus-Meldung zurück.

[static] QDBusMessage QDBusMessage::createError(const QString &name, const QString &msg)

Konstruiert eine neue DBus-Meldung, die einen Fehler darstellt, mit der angegebenen name und msg.

QDBusMessage QDBusMessage::createErrorReply(const QDBusError &error) const

Konstruiert eine neue DBus-Meldung, die eine Fehlerantwortmeldung darstellt, aus dem angegebenen error Objekt.

QDBusMessage QDBusMessage::createErrorReply(QDBusError::ErrorType type, const QString &msg) const

Konstruiert eine neue DBus-Antwortnachricht für den Fehlertyp type unter Verwendung der Nachricht msg. Gibt die DBus-Nachricht zurück.

QDBusMessage QDBusMessage::createErrorReply(const QString &name, const QString &msg) const

Konstruiert eine neue DBus-Nachricht, die eine Fehlerantwortnachricht darstellt, mit der angegebenen name und msg.

[static] QDBusMessage QDBusMessage::createMethodCall(const QString &service, const QString &path, const QString &interface, const QString &method)

Konstruiert eine neue DBus-Nachricht, die einen Methodenaufruf darstellt. Ein Methodenaufruf teilt immer seine Zieladresse mit (service, path, interface und method).

Der DBus-Bus erlaubt den Aufruf einer Methode auf einem bestimmten entfernten Objekt ohne Angabe der Zielschnittstelle, wenn der Methodenname eindeutig ist. Wenn jedoch zwei Schnittstellen auf dem entfernten Objekt denselben Methodennamen exportieren, ist das Ergebnis undefiniert (eine der beiden kann aufgerufen werden oder ein Fehler kann zurückgegeben werden).

Bei der Verwendung von DBus in einem Peer-to-Peer-Kontext (d. h. nicht auf einem Bus) ist der Parameter service optional.

Die Klasse QDBusInterface bietet eine einfachere Abstraktion für synchrone Methodenaufrufe.

Diese Funktion gibt ein QDBusMessage Objekt zurück, das mit QDBusConnection::call() gesendet werden kann.

QDBusMessage QDBusMessage::createReply(const QList<QVariant> &arguments = QList<QVariant>()) const

Konstruiert eine neue DBus-Nachricht, die eine Antwort darstellt, mit der angegebenen arguments.

QDBusMessage QDBusMessage::createReply(const QVariant &argument) const

Konstruiert eine neue DBus-Nachricht, die eine Antwort darstellt, mit der angegebenen argument.

[static] QDBusMessage QDBusMessage::createSignal(const QString &path, const QString &interface, const QString &name)

Konstruiert eine neue DBus-Nachricht mit den angegebenen path, interface und name, die eine Signalaussendung darstellt.

Ein DBus-Signal wird von einer Anwendung ausgesendet und von allen Anwendungen empfangen, die auf dieses Signal von dieser Schnittstelle warten.

Das zurückgegebene QDBusMessage Objekt kann mit der Funktion QDBusConnection::send() gesendet werden.

[static] QDBusMessage QDBusMessage::createTargetedSignal(const QString &service, const QString &path, const QString &interface, const QString &name)

Konstruiert eine neue DBus-Nachricht mit den angegebenen path, interface und name, die eine Signalaussendung an ein bestimmtes Ziel darstellt.

Ein DBus-Signal wird von einer Anwendung ausgesendet und wird nur von der Anwendung empfangen, die den Zielnamen service besitzt.

Das zurückgegebene QDBusMessage Objekt kann mit der Funktion QDBusConnection::send() gesendet werden.

QString QDBusMessage::errorMessage() const

Gibt die vom Menschen lesbare Nachricht zurück, die mit dem empfangenen Fehler verbunden ist.

QString QDBusMessage::errorName() const

Gibt den Namen des Fehlers zurück, der empfangen wurde.

QString QDBusMessage::interface() const

Gibt die Schnittstelle der aufgerufenen Methode (im Falle eines Methodenaufrufs) oder des Signals, von dem empfangen wird, zurück.

bool QDBusMessage::isDelayedReply() const

Gibt das Flag für die verzögerte Antwort zurück, wie es von setDelayedReply() gesetzt wurde. Standardmäßig ist dieses Flag auf false gesetzt, was bedeutet, dass Qt D-Bus bei Bedarf automatische Antworten erzeugt.

bool QDBusMessage::isInteractiveAuthorizationAllowed() const

Gibt zurück, ob in der Nachricht das Kennzeichen ALLOW_INTERACTIVE_AUTHORIZATION gesetzt ist.

Siehe auch setInteractiveAuthorizationAllowed() und QDBusAbstractInterface::isInteractiveAuthorizationAllowed().

bool QDBusMessage::isReplyRequired() const

Gibt das Flag zurück, das angibt, ob diese Nachricht eine Antwort erhalten soll oder nicht. Dies ist nur für method call messages sinnvoll: alle anderen Arten von Nachrichten können keine Antworten erhalten und diese Funktion gibt für sie immer false zurück.

QString QDBusMessage::member() const

Gibt den Namen des Signals zurück, das ausgesendet wurde, oder den Namen der Methode, die aufgerufen wurde.

QString QDBusMessage::path() const

Gibt den Pfad des Objekts zurück, an das diese Nachricht gesendet (im Falle eines Methodenaufrufs) oder von dem sie empfangen wird (bei einem Signal).

QString QDBusMessage::service() const

Gibt den Namen des Dienstes oder die Busadresse des entfernten Methodenaufrufs zurück.

void QDBusMessage::setArguments(const QList<QVariant> &arguments)

Legt die Argumente fest, die über den D-Bus an arguments gesendet werden sollen. Dies sind die Argumente für einen Methodenaufruf oder die Parameter im Signal.

Siehe auch arguments().

void QDBusMessage::setAutoStartService(bool enable)

Setzt das Autostart-Flag auf enable. Dieses Flag ist nur für Methodenaufrufe sinnvoll, bei denen es dem D-Bus-Server mitteilt, dass der für den Dienstnamen zuständige Dienst entweder automatisch gestartet werden soll oder nicht automatisch gestartet werden soll.

Standardmäßig ist dieses Flag true, d.h. ein Dienst wird automatisch gestartet. Dies bedeutet:

Wenn der Dienst, an den dieser Methodenaufruf gesendet wird, bereits läuft, wird der Methodenaufruf an ihn gesendet. Wenn der Dienst noch nicht läuft, wird der D-Bus-Daemon aufgefordert, den Dienst, der diesem Dienstnamen zugeordnet ist, automatisch zu starten. Dies geschieht durch .service-Dateien, die in einem dem D-Bus-Server bekannten Verzeichnis abgelegt werden. Diese Dateien enthalten dann jeweils einen Dienstnamen und den Pfad zu einem Programm, das ausgeführt werden soll, wenn dieser Dienstname angefordert wird.

Siehe auch autoStartService().

void QDBusMessage::setDelayedReply(bool enable) const

Legt fest, ob die Nachricht später beantwortet werden soll (wenn enable true ist) oder ob eine automatische Antwort von Qt D-Bus erzeugt werden soll (wenn enable false ist).

In D-Bus müssen alle Methodenaufrufe eine Antwort an den Aufrufer generieren, es sei denn, der Aufrufer gibt explizit etwas anderes an (siehe isReplyRequired()). QtDBus generiert automatisch solche Antworten für alle Slots, die aufgerufen werden, aber es erlaubt auch Slots anzugeben, ob sie die Verantwortung für das Senden der Antwort zu einem späteren Zeitpunkt übernehmen wollen, nachdem die Funktion die Verarbeitung beendet hat.

Siehe auch isDelayedReply() und Verspätete Antworten.

void QDBusMessage::setInteractiveAuthorizationAllowed(bool enable)

Aktiviert oder deaktiviert das Kennzeichen ALLOW_INTERACTIVE_AUTHORIZATION in einer Nachricht.

Dieses Flag ist nur für Methodenaufruf-Meldungen sinnvoll (QDBusMessage::MethodCallMessage). Wenn enable auf true gesetzt ist, zeigt das Flag dem Aufrufer an, dass der Aufrufer der Methode bereit ist, auf eine interaktive Autorisierung zu warten (z. B. über Polkit), bevor die eigentliche Methode abgearbeitet wird.

Wenn enable auf false gesetzt ist, wird das Flag nicht gesetzt, was bedeutet, dass von der Gegenseite erwartet wird, dass sie alle Autorisierungsentscheidungen nicht interaktiv und unverzüglich trifft. Dies ist die Standardeinstellung.

Der Fehler org.freedesktop.DBus.Error.InteractiveAuthorizationRequired zeigt an, dass die Autorisierung fehlgeschlagen ist, aber erfolgreich hätte sein können, wenn dieses Flag gesetzt gewesen wäre.

Siehe auch isInteractiveAuthorizationAllowed() und QDBusAbstractInterface::setInteractiveAuthorizationAllowed().

QString QDBusMessage::signature() const

Gibt die Signatur des empfangenen Signals oder für die Ausgangsargumente eines Methodenaufrufs zurück.

[noexcept] void QDBusMessage::swap(QDBusMessage &other)

Tauscht diese Nachricht mit other aus. Dieser Vorgang ist sehr schnell und schlägt nie fehl.

QDBusMessage::MessageType QDBusMessage::type() const

Gibt den Nachrichtentyp zurück.

QDBusMessage &QDBusMessage::operator<<(const QVariant &arg)

Hängt das Argument arg an die Liste der Argumente an, die bei einem Methodenaufruf oder einer Signalausgabe über den D-Bus gesendet werden.

QDBusMessage &QDBusMessage::operator=(const QDBusMessage &other)

Kopiert den Inhalt des durch other angegebenen Objekts.

Hinweis: QDBusMessage Objekte werden gemeinsam genutzt. Änderungen, die an der Kopie vorgenommen werden, wirken sich auch auf das Original aus. Siehe setDelayedReply() für weitere Informationen.

© 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.