Sur cette page

QDBusContext Class

La classe QDBusContext permet aux slots de déterminer le contexte D-Bus des appels. Plus d'informations...

En-tête : #include <QDBusContext>
CMake : find_package(Qt6 REQUIRED COMPONENTS DBus)
target_link_libraries(mytarget PRIVATE Qt6::DBus)
qmake : QT += dbus

Fonctions publiques

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

Description détaillée

Lorsqu'un slot est appelé dans un objet suite à la délivrance d'un signal ou à l'appel d'une méthode à distance, il est parfois nécessaire de connaître le contexte dans lequel cela s'est produit. En particulier, si le slot détermine qu'il veut envoyer la réponse à une date ultérieure ou s'il veut répondre par une erreur, le contexte est nécessaire.

La classe QDBusContext est une alternative à l'accès au contexte qui n'implique pas de modifier le code généré par le compilateur XML deQt D-Bus (qdbusxml2cpp).

QDBusContext est utilisé en le sous-classant à partir des objets exportés à l'aide de QDBusConnection::registerObject(). L'exemple suivant illustre l'utilisation :

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();
}

L'exemple illustre les deux utilisations typiques, à savoir l'envoi de réponses d'erreur et l'envoi de réponses différées.

Note : ne pas sous-classer QDBusContext et QDBusAbstractAdaptor en même temps. QDBusContext doit apparaître dans l'objet réel, pas dans l'adaptateur. S'il est nécessaire de déterminer le contexte à partir du code de l'adaptateur, utilisez un héritage public et accédez aux fonctions via QObject::parent().

Documentation des fonctions membres

QDBusContext::QDBusContext()

Construit un QDBusContext vide.

[noexcept] QDBusContext::~QDBusContext()

Un destructeur vide.

bool QDBusContext::calledFromDBus() const

Renvoie true si nous traitons un appel D-Bus. Si cette fonction renvoie true, les autres fonctions de cette classe sont disponibles.

L'accès à ces fonctions lorsque cette fonction renvoie false n'est pas défini et peut entraîner des plantages.

QDBusConnection QDBusContext::connection() const

Renvoie la connexion à partir de laquelle cet appel a été reçu.

bool QDBusContext::isDelayedReply() const

Renvoie true si cet appel aura une réponse différée.

Voir aussi setDelayedReply().

const QDBusMessage &QDBusContext::message() const

Renvoie le message qui a généré cet appel.

void QDBusContext::sendErrorReply(const QString &name, const QString &msg = QString()) const

Envoie une erreur name en guise de réponse à l'appelant. Le paramètre optionnel msg est un texte lisible par l'homme expliquant l'échec.

Si une erreur est envoyée, la valeur de retour et tous les paramètres de sortie du slot appelé seront ignorés par Qt D-Bus.

void QDBusContext::sendErrorReply(QDBusError::ErrorType type, const QString &msg = QString()) const

Envoie une erreur type en guise de réponse à l'appelant. Le paramètre optionnel msg est un texte lisible par l'homme expliquant l'échec.

Si une erreur est envoyée, la valeur de retour et tous les paramètres de sortie du slot appelé seront ignorés par Qt D-Bus.

Il s'agit d'une fonction surchargée.

void QDBusContext::setDelayedReply(bool enable) const

Définit si cet appel aura une réponse différée ou non.

Si enable est faux, Qt D-Bus générera automatiquement une réponse à l'appelant, si nécessaire, dès que le slot appelé reviendra.

Si enable est vrai, Qt D-Bus ne génère pas de réponse automatique. Il ignorera également la valeur de retour du slot et tout paramètre de sortie. Au lieu de cela, l'objet appelé est chargé de stocker le message entrant et d'envoyer une réponse ou une erreur ultérieurement.

Si la réponse n'est pas envoyée, D-Bus génère automatiquement une erreur de dépassement de délai.

Voir aussi 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.