En esta página

QDBusContext Class

La clase QDBusContext permite a los slots determinar el contexto D-Bus de las llamadas. Más...

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

Funciones públicas

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

Descripción detallada

Cuando un slot es llamado en un objeto debido al envío de una señal o debido a la llamada de un método remoto, a veces es necesario conocer el contexto en el que eso ocurrió. En particular, si el slot determina que quiere enviar la respuesta en una oportunidad posterior o si quiere responder con un error, el contexto es necesario.

La clase QDBusContext es una alternativa para acceder al contexto que no implica modificar el código generado por el compilador XML deQt D-Bus (qdbusxml2cpp).

QDBusContext se utiliza subclasificándolo a partir de los objetos que se exportan utilizando QDBusConnection::registerObject(). El siguiente ejemplo ilustra el uso:

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

El ejemplo ilustra los dos usos típicos, el de enviar respuestas de error y el de respuestas retardadas.

Nota: no subclase QDBusContext y QDBusAbstractAdaptor al mismo tiempo. QDBusContext debe aparecer en el objeto real, no en el adaptador. Si es necesario desde el código del adaptador determinar el contexto, utiliza una herencia pública y accede a las funciones a través de QObject::parent().

Documentación de las funciones miembro

QDBusContext::QDBusContext()

Construye un QDBusContext vacío.

[noexcept] QDBusContext::~QDBusContext()

Un destructor vacío.

bool QDBusContext::calledFromDBus() const

Devuelve true si estamos procesando una llamada D-Bus. Si esta función devuelve true, el resto de las funciones de esta clase están disponibles.

Acceder a esas funciones cuando esta función devuelve false es indefinido y puede provocar fallos.

QDBusConnection QDBusContext::connection() const

Devuelve la conexión desde la que se recibió esta llamada.

bool QDBusContext::isDelayedReply() const

Devuelve true si esta llamada tendrá una respuesta retardada.

Véase también setDelayedReply().

const QDBusMessage &QDBusContext::message() const

Devuelve el mensaje que generó esta llamada.

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

Envía un error name como respuesta a la persona que llama. El parámetro opcional msg es un texto legible por humanos que explica el fallo.

Si se envía un error, el valor de retorno y cualquier parámetro de salida de la ranura llamada serán ignorados por Qt D-Bus.

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

Envía un error type como respuesta a la persona que llama. El parámetro opcional msg es un texto legible por humanos que explica el fallo.

Si se envía un error, el valor de retorno y cualquier parámetro de salida de la ranura llamada serán ignorados por Qt D-Bus.

Se trata de una función sobrecargada.

void QDBusContext::setDelayedReply(bool enable) const

Establece si esta llamada tendrá una respuesta retardada o no.

Si enable es falso, Qt D-Bus generará automáticamente una respuesta a la persona que llama, si es necesario, tan pronto como la ranura llamada regrese.

Si enable es verdadero, Qt D-Bus no generará respuestas automáticas. También ignorará el valor de retorno de la ranura y cualquier parámetro de salida. En su lugar, el objeto llamado es responsable de almacenar el mensaje entrante y enviar una respuesta o un error en un momento posterior.

No enviar una respuesta resultará en un error automático de tiempo de espera generado por D-Bus.

Véase también 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.