Sur cette page

QDBusContext Class

La classe `QDBusContext` permet aux slots de déterminer le contexte D-Bus des appels. En savoir plus...

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 à la suite de la réception d’un signal ou d’un appel de 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écide d’envoyer la réponse ultérieurement ou de renvoyer une erreur, ce contexte est indispensable.

La classe QDBusContext offre une alternative pour accéder au contexte sans avoir à modifier le code généré par le compilateur XML d'Qt D-Bus (qdbusxml2cpp).

On utilise QDBusContext en la sous-classant à partir des objets exportés à l’aide de ` QDBusConnection::registerObject()`. L’exemple suivant illustre son 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 : l’envoi de réponses d’erreur et celui de réponses différées.

Remarque : ne sous-classez pas simultanément QDBusContext et QDBusAbstractAdaptor. QDBusContext doit apparaître dans l’objet réel, et non dans l’adaptateur. S’il est nécessaire, depuis le code de l’adaptateur, de déterminer le contexte, utilisez un héritage public et accédez aux fonctions via QObject::parent().

Documentation des fonctions membres

QDBusContext::QDBusContext()

Crée un objet 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 donnera lieu à une réponse différée.

Voir également setDelayedReply().

const QDBusMessage &QDBusContext::message() const

Renvoie le message à l'origine de cet appel.

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

Envoie une erreur de type « name » en réponse à l'appelant. Le paramètre facultatif « msg » est un texte lisible par l'utilisateur expliquant l'échec.

Si une erreur est renvoyé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 de type « type » en réponse à l'appelant. Le paramètre facultatif « msg » est un texte lisible par l'utilisateur expliquant l'échec.

Si une erreur est renvoyé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étermine si cet appel fera l'objet d'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é renvoie une valeur.

Si ` enable ` est vrai, ` Qt D-Bus ` ne générera pas de réponses automatiques. Il ignorera également la valeur de retour du slot et tous les paramètres de sortie. À la place, l'objet appelé est chargé de stocker le message entrant et d'envoyer une réponse ou une erreur ultérieurement.

Si aucune réponse n’est envoyée, D-Bus générera automatiquement une erreur de délai d’attente.

Voir également 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.