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.