En esta página

QDBusConnection Class

La clase QDBusConnection representa una conexión al demonio de bus D-Bus. Más...

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

Tipos públicos

enum BusType { SessionBus, SystemBus, ActivationBus }
flags ConnectionCapabilities
enum ConnectionCapability { UnixFileDescriptorPassing }
enum RegisterOption { ExportAdaptors, ExportScriptableSlots, ExportScriptableSignals, ExportScriptableProperties, ExportScriptableInvokables, …, ExportChildObjects }
flags RegisterOptions
enum UnregisterMode { UnregisterNode, UnregisterTree }

Funciones Públicas

QDBusConnection(const QString &name)
QDBusConnection(const QDBusConnection &other)
~QDBusConnection()
QDBusPendingCall asyncCall(const QDBusMessage &message, int timeout = -1) const
QString baseService() const
QDBusMessage call(const QDBusMessage &message, QDBus::CallMode mode = QDBus::Block, int timeout = -1) const
bool callWithCallback(const QDBusMessage &message, QObject *receiver, const char *returnMethod, const char *errorMethod, int timeout = -1) const
bool connect(const QString &service, const QString &path, const QString &interface, const QString &name, QObject *receiver, const char *slot)
bool connect(const QString &service, const QString &path, const QString &interface, const QString &name, const QString &signature, QObject *receiver, const char *slot)
bool connect(const QString &service, const QString &path, const QString &interface, const QString &name, const QStringList &argumentMatch, const QString &signature, QObject *receiver, const char *slot)
QDBusConnection::ConnectionCapabilities connectionCapabilities() const
bool disconnect(const QString &service, const QString &path, const QString &interface, const QString &name, QObject *receiver, const char *slot)
bool disconnect(const QString &service, const QString &path, const QString &interface, const QString &name, const QString &signature, QObject *receiver, const char *slot)
bool disconnect(const QString &service, const QString &path, const QString &interface, const QString &name, const QStringList &argumentMatch, const QString &signature, QObject *receiver, const char *slot)
QDBusConnectionInterface *interface() const
bool isConnected() const
QDBusError lastError() const
QString name() const
QObject *objectRegisteredAt(const QString &path) const
bool registerObject(const QString &path, QObject *object, QDBusConnection::RegisterOptions options = ExportAdaptors)
bool registerObject(const QString &path, const QString &interface, QObject *object, QDBusConnection::RegisterOptions options = ExportAdaptors)
bool registerService(const QString &serviceName)
bool send(const QDBusMessage &message) const
void swap(QDBusConnection &other)
void unregisterObject(const QString &path, QDBusConnection::UnregisterMode mode = UnregisterNode)
bool unregisterService(const QString &serviceName)
QDBusConnection &operator=(const QDBusConnection &other)

Miembros públicos estáticos

QDBusConnection connectToBus(QDBusConnection::BusType type, const QString &name)
QDBusConnection connectToBus(const QString &address, const QString &name)
QDBusConnection connectToPeer(const QString &address, const QString &name)
void disconnectFromBus(const QString &name)
void disconnectFromPeer(const QString &name)
QByteArray localMachineId()
QDBusConnection sessionBus()
QDBusConnection systemBus()

Descripción detallada

Esta clase es el punto inicial de una sesión D-Bus. Usándola, puedes obtener acceso a objetos remotos, interfaces; conectar señales remotas a las ranuras de tus objetos; registrar objetos, etc.

Las conexiones D-Bus se crean utilizando la función connectToBus(), que abre una conexión con el demonio servidor y realiza el handshaking inicial, asociando a esa conexión un nombre. Otros intentos de conexión con el mismo nombre devolverán la misma conexión.

A continuación, la conexión se corta mediante la función disconnectFromBus().

Una vez desconectada, llamar a connectToBus() no restablecerá la conexión, deberás crear una nueva instancia de QDBusConnection.

Como comodidad para los dos tipos de conexión más comunes, las funciones sessionBus() y systemBus() devuelven conexiones abiertas al demonio del servidor de sesiones y al demonio del servidor del sistema, respectivamente. Estas conexiones se abren cuando se utilizan por primera vez y se cierran cuando se ejecuta el destructor QCoreApplication.

D-Bus también soporta conexiones peer-to-peer, sin necesidad de un demonio servidor de bus. Usando esta facilidad, dos aplicaciones pueden hablar entre ellas e intercambiar mensajes. Esto puede lograrse pasando una dirección a la función connectToBus(), que fue abierta por otra aplicación D-Bus usando QDBusServer.

Documentación de tipos de miembros

enum QDBusConnection::BusType

Especifica el tipo de conexión de bus. Los tipos de bus válidos son:

ConstanteValorDescripción
QDBusConnection::SessionBus0el bus de sesión, asociado con la sesión de escritorio en ejecución
QDBusConnection::SystemBus1el bus de sistema, utilizado para comunicarse con los procesos de todo el sistema
QDBusConnection::ActivationBus2el bus de activación, el "alias" del bus que inició el servicio

En el bus de sesión, se pueden encontrar otras aplicaciones del mismo usuario que comparten la misma sesión de escritorio (de ahí el nombre). En el Bus de Sistema, sin embargo, se suelen encontrar procesos compartidos por todo el sistema.

enum QDBusConnection::ConnectionCapability
flags QDBusConnection::ConnectionCapabilities

Este enum describe las capacidades disponibles para una conexión D-Bus.

ConstanteValorDescripción
QDBusConnection::UnixFileDescriptorPassing0x0001permite pasar descriptores de archivos Unix a otros procesos (véase QDBusUnixFileDescriptor)

El tipo ConnectionCapabilities es un typedef para QFlags<ConnectionCapability>. Almacena una combinación OR de valores ConnectionCapability.

Ver también connectionCapabilities().

enum QDBusConnection::RegisterOption
flags QDBusConnection::RegisterOptions

Especifica las opciones para registrar objetos con la conexión. Los valores posibles son:

ConstanteValorDescripción
QDBusConnection::ExportAdaptors0x01exportar el contenido de los adaptadores encontrados en este objeto
QDBusConnection::ExportScriptableSlots0x10exportar las ranuras programables de este objeto
QDBusConnection::ExportScriptableSignals0x20Exportar las señales programables de este objeto
QDBusConnection::ExportScriptableProperties0x40exportar las propiedades scriptables de este objeto
QDBusConnection::ExportScriptableInvokables0x80exportar los invocables de este objeto
QDBusConnection::ExportScriptableContents0xf0forma abreviada de ExportScriptableSlots | ExportScriptableSignals | ExportScriptableProperties
QDBusConnection::ExportNonScriptableSlots0x100exportar las ranuras no programables de este objeto
QDBusConnection::ExportNonScriptableSignals0x200exportar las señales no programables de este objeto
QDBusConnection::ExportNonScriptableProperties0x400exportar las propiedades no programables de este objeto
QDBusConnection::ExportNonScriptableInvokables0x800exportar los invocables no programables de este objeto
QDBusConnection::ExportNonScriptableContents0xf00forma abreviada de ExportNonScriptableSlots | ExportNonScriptableSignals | ExportNonScriptableProperties
QDBusConnection::ExportAllSlotsExportScriptableSlots|ExportNonScriptableSlotsexportar todas las ranuras de este objeto
QDBusConnection::ExportAllSignalsExportScriptableSignals|ExportNonScriptableSignalsexportar todas las señales de este objeto
QDBusConnection::ExportAllPropertiesExportScriptableProperties|ExportNonScriptablePropertiesexportar todas las propiedades de este objeto
QDBusConnection::ExportAllInvokablesExportScriptableInvokables|ExportNonScriptableInvokablesexportar todos los invocables de este objeto
QDBusConnection::ExportAllContentsExportScriptableContents|ExportNonScriptableContentsexportar todo el contenido de este objeto
QDBusConnection::ExportChildObjects0x1000exportar los objetos hijo de este objeto

El tipo RegisterOptions es un typedef para QFlags<RegisterOption>. Almacena una combinación OR de valores RegisterOption.

Véase también registerObject(), QDBusAbstractAdaptor, y Uso de adaptadores.

enum QDBusConnection::UnregisterMode

El modo para anular el registro de una ruta de objeto:

ConstanteValorDescripción
QDBusConnection::UnregisterNode0Desregistrar sólo este nodo: no se desregistran los objetos hijos
QDBusConnection::UnregisterTree1anular el registro de este nodo y de todos sus subárboles

Tenga en cuenta, sin embargo, que si este objeto fue registrado con la opción ExportChildObjects, UnregisterNode anulará el registro de los objetos hijos también.

Documentación de las funciones miembro

[explicit] QDBusConnection::QDBusConnection(const QString &name)

Crea un objeto QDBusConnection adjunto a la conexión con nombre name.

Esto no abre la conexión. Tienes que llamar a connectToBus() para abrirla.

QDBusConnection::QDBusConnection(const QDBusConnection &other)

Crea una copia de la conexión other.

[noexcept] QDBusConnection::~QDBusConnection()

Elimina este objeto. Esto no cierra la conexión: tienes que llamar a disconnectFromBus() para hacerlo.

QDBusPendingCall QDBusConnection::asyncCall(const QDBusMessage &message, int timeout = -1) const

Envía la dirección message a través de esta conexión y la devuelve inmediatamente. Esta función sólo es adecuada para llamadas a métodos. Devuelve un objeto de tipo QDBusPendingCall que puede utilizarse para seguir el estado de la respuesta.

Si no se recibe respuesta en timeout milisegundos, se entregará un error automático indicando la expiración de la llamada. El valor por defecto de timeout es -1, que será sustituido por un valor definido por la implementación que sea adecuado para las comunicaciones entre procesos (generalmente, 25 segundos). Este tiempo de espera es también el límite superior de espera en QDBusPendingCall::waitForFinished().

Véase la función QDBusInterface::asyncCall() para una forma más amigable de realizar llamadas.

Nota: Las llamadas a métodos de objetos registrados por la propia aplicación nunca son asíncronas debido a limitaciones de implementación.

QString QDBusConnection::baseService() const

Devuelve el nombre de conexión único para esta conexión, si este objeto QDBusConnection está conectado, o un QString vacío en caso contrario.

Un Nombre Único de Conexión es una cadena en la forma ":x.xxx" (donde x son dígitos decimales) que es asignada por el demonio del servidor D-Bus al conectarse. Identifica de forma única a este cliente en el bus.

Esta función devuelve un QString vacío para conexiones peer-to-peer.

QDBusMessage QDBusConnection::call(const QDBusMessage &message, QDBus::CallMode mode = QDBus::Block, int timeout = -1) const

Envía el mensaje message a través de esta conexión y se bloquea, esperando una respuesta, durante un máximo de timeout milisegundos. Esta función sólo es adecuada para llamadas a métodos. Devuelve el mensaje de respuesta como valor de retorno, que será del tipo QDBusMessage::ReplyMessage o QDBusMessage::ErrorMessage.

Si no se recibe ninguna respuesta en timeout milisegundos, se emitirá un error automático indicando la expiración de la llamada. El valor por defecto de timeout es -1, que será sustituido por un valor definido por la implementación que sea adecuado para las comunicaciones entre procesos (generalmente, 25 segundos).

Véase la función QDBusInterface::call() para una forma más amigable de realizar llamadas.

Advertencia: Si mode es QDBus::BlockWithGui, esta función volverá a entrar en el bucle de eventos de Qt para esperar la respuesta. Durante la espera, puede enviar señales y otras llamadas a métodos de su aplicación. Por lo tanto, debe estar preparado para manejar una reentrada siempre que se realice una llamada con call().

bool QDBusConnection::callWithCallback(const QDBusMessage &message, QObject *receiver, const char *returnMethod, const char *errorMethod, int timeout = -1) const

Envía el message a través de esta conexión y retorna inmediatamente. Cuando se recibe la respuesta, se llama al método returnMethod en el objeto receiver. Si se produce un error, se llamará al método errorMethod en su lugar.

Si no se recibe respuesta en timeout milisegundos, se emitirá un error automático indicando la expiración de la llamada. El valor por defecto de timeout es -1, que será sustituido por un valor definido por la implementación que sea adecuado para las comunicaciones entre procesos (generalmente, 25 segundos).

Esta función sólo es adecuada para llamadas a métodos. Se garantiza que la ranura se llamará exactamente una vez con la respuesta, siempre que los tipos de parámetros coincidan y no se produzca ningún error.

Devuelve true si el mensaje fue enviado, o false si el mensaje no pudo ser enviado.

bool QDBusConnection::connect(const QString &service, const QString &path, const QString &interface, const QString &name, QObject *receiver, const char *slot)

Conecta la señal especificada por los parámetros service, path, interface y name a la ranura slot del objeto receiver. Los argumentos service y path pueden estar vacíos, denotando una conexión a cualquier señal del par (interface, name), desde cualquier aplicación remota.

Devuelve true si la conexión se ha realizado correctamente.

Advertencia: La señal sólo se entregará a la ranura si los parámetros coinciden. Esta verificación sólo puede hacerse cuando se recibe la señal, no en el momento de la conexión.

bool QDBusConnection::connect(const QString &service, const QString &path, const QString &interface, const QString &name, const QString &signature, QObject *receiver, const char *slot)

Conecta la señal a la ranura slot en el objeto receiver. A diferencia de la anterior sobrecarga connect(), esta función permite especificar la firma del parámetro a conectar utilizando la variable signature. La función verificará entonces que esta firma puede ser entregada a la ranura especificada por slot y devolverá false en caso contrario.

Devuelve true si la conexión se ha realizado correctamente.

Nota: Esta función verifica que la firma de la señal coincide con los parámetros de la ranura, pero no verifica que la señal real exista con la firma dada en el servicio remoto.

Se trata de una función sobrecargada.

bool QDBusConnection::connect(const QString &service, const QString &path, const QString &interface, const QString &name, const QStringList &argumentMatch, const QString &signature, QObject *receiver, const char *slot)

Conecta la señal a la ranura slot en el objeto receiver. A diferencia de la anterior sobrecarga connect(), esta función permite especificar la firma del parámetro a conectar utilizando la variable signature. La función verificará entonces que esta firma puede ser entregada a la ranura especificada por slot y devolverá false en caso contrario.

El parámetro argumentMatch enumera los parámetros de cadena que deben coincidir, en orden secuencial. Tenga en cuenta que, para que coincida con una cadena vacía, debe pasar un QString que esté vacío pero no sea nulo (es decir, QString("")). Un QString nulo omite la coincidencia en esa posición.

Devuelve true si la conexión se ha realizado correctamente.

Nota: Esta función verifica que la firma de la señal coincide con los parámetros de la ranura, pero no verifica que la señal real exista con la firma dada en el servicio remoto.

Se trata de una función sobrecargada.

[static] QDBusConnection QDBusConnection::connectToBus(QDBusConnection::BusType type, const QString &name)

Abre una conexión de tipo type a uno de los buses conocidos y le asocia el nombre de conexión name. Devuelve un objeto QDBusConnection asociado a dicha conexión.

[static] QDBusConnection QDBusConnection::connectToBus(const QString &address, const QString &name)

Abre una conexión a un bus privado en la dirección address y le asocia el nombre de conexión name. Devuelve un objeto QDBusConnection asociado a dicha conexión.

[static] QDBusConnection QDBusConnection::connectToPeer(const QString &address, const QString &name)

Abre una conexión peer-to-peer en la dirección address y le asocia el nombre de conexión name. Devuelve un objeto QDBusConnection asociado a dicha conexión.

QDBusConnection::ConnectionCapabilities QDBusConnection::connectionCapabilities() const

Devuelve las capacidades de esta conexión tal y como se negociaron con el servidor de bus o par. Si este QDBusConnection no está conectado, esta función no devuelve ninguna capacidad.

bool QDBusConnection::disconnect(const QString &service, const QString &path, const QString &interface, const QString &name, QObject *receiver, const char *slot)

Desconecta la señal especificada por los parámetros service, path, interface y name de la ranura slot del objeto receiver. Los argumentos deben ser los mismos que los pasados a la función connect().

Devuelve true si la desconexión se ha realizado correctamente.

bool QDBusConnection::disconnect(const QString &service, const QString &path, const QString &interface, const QString &name, const QString &signature, QObject *receiver, const char *slot)

Desconecta la señal especificada por los parámetros service, path, interface, name, y signature de la ranura slot del objeto receiver. Los argumentos deben ser los mismos que los pasados a la función connect().

Devuelve true si la desconexión se ha realizado correctamente.

Se trata de una función sobrecargada.

bool QDBusConnection::disconnect(const QString &service, const QString &path, const QString &interface, const QString &name, const QStringList &argumentMatch, const QString &signature, QObject *receiver, const char *slot)

Desconecta la señal especificada por los parámetros service, path, interface, name, argumentMatch, y signature de la ranura slot del objeto receiver. Los argumentos deben ser los mismos que los pasados a la función connect().

Devuelve true si la desconexión se ha realizado correctamente.

Se trata de una función sobrecargada.

[static] void QDBusConnection::disconnectFromBus(const QString &name)

Cierra la conexión de bus de nombre name.

Tenga en cuenta que si todavía hay objetos QDBusConnection asociados con la misma conexión, la conexión no se cerrará hasta que se eliminen todas las referencias. Sin embargo, no se pueden crear más referencias utilizando el constructor QDBusConnection.

[static] void QDBusConnection::disconnectFromPeer(const QString &name)

Cierra la conexión de pares de nombre name.

Ten en cuenta que si todavía hay objetos QDBusConnection asociados a la misma conexión, la conexión no se cerrará hasta que se eliminen todas las referencias. Sin embargo, no se pueden crear más referencias utilizando el constructor QDBusConnection.

QDBusConnectionInterface *QDBusConnection::interface() const

Devuelve un objeto QDBusConnectionInterface que representa la interfaz del servidor D-Bus en esta conexión.

bool QDBusConnection::isConnected() const

Devuelve true si este objeto QDBusConnection está conectado.

QDBusError QDBusConnection::lastError() const

Devuelve el último error ocurrido en esta conexión.

Esta función se proporciona para código de bajo nivel. Si está utilizando QDBusInterface::call(), los códigos de error se informan mediante su valor de retorno.

Véase también QDBusInterface y QDBusMessage.

[static] QByteArray QDBusConnection::localMachineId()

Devuelve el ID de la máquina local conocido por el sistema D-Bus. Cada nodo o host que ejecuta D-Bus tiene un identificador único que puede ser usado para distinguirlo de otros hosts si están compartiendo recursos como el sistema de archivos.

Ten en cuenta que no está garantizado que el ID de la máquina local sea persistente a través de los arranques del sistema, por lo que este identificador no debe ser almacenado en un almacenamiento persistente (como el sistema de archivos). Se garantiza que permanecerá constante sólo durante el tiempo de vida de esta sesión de arranque.

QString QDBusConnection::name() const

Devuelve el nombre de conexión para esta conexión, tal y como se da como parámetro de nombre a connectToBus().

El nombre de la conexión se puede utilizar para identificar de forma única las conexiones subyacentes reales a los buses. Las copias realizadas a partir de una única conexión siempre compartirán implícitamente la conexión subyacente y, por lo tanto, tendrán el mismo nombre de conexión.

A la inversa, dos conexiones que tengan nombres de conexión diferentes siempre estarán conectadas a buses diferentes, o tendrán un nombre único diferente (devuelto por baseService()) en ese bus.

Véase también connectToBus() y disconnectFromBus().

QObject *QDBusConnection::objectRegisteredAt(const QString &path) const

Devuelve el objeto que se registró con registerObject() en la ruta del objeto dada por path.

bool QDBusConnection::registerObject(const QString &path, QObject *object, QDBusConnection::RegisterOptions options = ExportAdaptors)

Registra el objeto object en la ruta path y devuelve true si el registro se ha realizado correctamente. El parámetro options especifica qué parte del objeto object se expondrá a través de D-Bus.

Esta función no reemplaza objetos existentes: si ya hay un objeto registrado en la ruta path, esta función devolverá false. Utilice unregisterObject() para desregistrarlo primero.

La bandera ExportChildObjects exporta objetos hijos en D-Bus basándose en la ruta de los objetos registrados y en QObject::objectName del hijo. Por lo tanto, es importante que el objeto hijo tenga un nombre de objeto.

No se puede registrar un objeto como hijo de un objeto registrado con ExportChildObjects.

bool QDBusConnection::registerObject(const QString &path, const QString &interface, QObject *object, QDBusConnection::RegisterOptions options = ExportAdaptors)

Registra el objeto object en la ruta path con el nombre de interfaz interface y devuelve true si el registro se ha realizado correctamente. El parámetro options especifica qué parte del objeto object se expondrá a través de D-Bus.

Esta función no reemplaza objetos existentes: si ya hay un objeto registrado en la ruta path, esta función devolverá false. Utilice unregisterObject() para desregistrarlo primero.

La bandera ExportChildObjects exporta objetos hijos en D-Bus basándose en la ruta de los objetos registrados y en QObject::objectName del hijo. Por lo tanto, es importante que el objeto hijo tenga un nombre de objeto.

No se puede registrar un objeto como hijo de un objeto registrado con ExportChildObjects.

Se trata de una función sobrecargada.

bool QDBusConnection::registerService(const QString &serviceName)

Intenta registrar serviceName en el servidor D-Bus y devuelve true si el registro se ha realizado correctamente. El registro fallará si el nombre ya está registrado por otra aplicación.

Véase también unregisterService() y QDBusConnectionInterface::registerService().

bool QDBusConnection::send(const QDBusMessage &message) const

Envía la dirección message a través de esta conexión, sin esperar respuesta. Esto es adecuado para errores, señales y valores de retorno, así como para llamadas cuyos valores de retorno no son necesarios.

Devuelve true si el mensaje se puso en cola con éxito, false en caso contrario.

[static] QDBusConnection QDBusConnection::sessionBus()

Devuelve un objeto QDBusConnection abierto con el bus de sesión. La referencia al objeto devuelta por esta función es válida hasta que la aplicación finalice, momento en el que se cerrará la conexión y se borrará el objeto.

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

Intercambia esta conexión con other. Esta operación es muy rápida y nunca falla.

[static] QDBusConnection QDBusConnection::systemBus()

Devuelve un objeto QDBusConnection abierto con el bus del sistema. La referencia al objeto devuelta por esta función es válida hasta que se ejecute el destructor de QCoreApplication, momento en el que se cerrará la conexión y se borrará el objeto.

void QDBusConnection::unregisterObject(const QString &path, QDBusConnection::UnregisterMode mode = UnregisterNode)

Desregistra un objeto que se registró con registerObject() en la ruta de objeto dada por path y, si mode es QDBusConnection::UnregisterTree, también todos sus subobjetos.

Tenga en cuenta que no puede anular el registro de objetos que no se hayan registrado con registerObject().

bool QDBusConnection::unregisterService(const QString &serviceName)

Desregistra el servicio serviceName que fue previamente registrado con registerService() y devuelve true si tuvo éxito.

Véase también registerService() y QDBusConnectionInterface::unregisterService().

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

Crea una copia de la conexión other en este objeto. Tenga en cuenta que la conexión a la que este objeto hacía referencia antes de la copia, no se desconecta espontáneamente.

Véase también disconnectFromBus().

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