QDBusMessage Class
La clase QDBusMessage representa un mensaje enviado o recibido a través del bus D-Bus. Más...
| Cabecera: | #include <QDBusMessage> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS DBus)target_link_libraries(mytarget PRIVATE Qt6::DBus) |
| qmake: | QT += dbus |
Tipos Públicos
| enum | MessageType { MethodCallMessage, SignalMessage, ReplyMessage, ErrorMessage, InvalidMessage } |
Funciones públicas
| QDBusMessage() | |
| QDBusMessage(const QDBusMessage &other) | |
(since 6.11) | QDBusMessage(QDBusMessage &&other) |
| ~QDBusMessage() | |
| QList<QVariant> | arguments() const |
| bool | autoStartService() const |
| QDBusMessage | createErrorReply(const QDBusError &error) const |
| QDBusMessage | createErrorReply(QDBusError::ErrorType type, const QString &msg) const |
| QDBusMessage | createErrorReply(const QString &name, const QString &msg) const |
| QDBusMessage | createReply(const QList<QVariant> &arguments = QList<QVariant>()) const |
| QDBusMessage | createReply(const QVariant &argument) const |
| QString | errorMessage() const |
| QString | errorName() const |
| QString | interface() const |
| bool | isDelayedReply() const |
| bool | isInteractiveAuthorizationAllowed() const |
| bool | isReplyRequired() const |
| QString | member() const |
| QString | path() const |
| QString | service() const |
| void | setArguments(const QList<QVariant> &arguments) |
| void | setAutoStartService(bool enable) |
| void | setDelayedReply(bool enable) const |
| void | setInteractiveAuthorizationAllowed(bool enable) |
| QString | signature() const |
| void | swap(QDBusMessage &other) |
| QDBusMessage::MessageType | type() const |
| QDBusMessage & | operator<<(const QVariant &arg) |
| QDBusMessage & | operator=(QDBusMessage &&other) |
| QDBusMessage & | operator=(const QDBusMessage &other) |
Miembros públicos estáticos
| QDBusMessage | createError(const QDBusError &error) |
| QDBusMessage | createError(QDBusError::ErrorType type, const QString &msg) |
| QDBusMessage | createError(const QString &name, const QString &msg) |
| QDBusMessage | createMethodCall(const QString &service, const QString &path, const QString &interface, const QString &method) |
| QDBusMessage | createSignal(const QString &path, const QString &interface, const QString &name) |
| QDBusMessage | createTargetedSignal(const QString &service, const QString &path, const QString &interface, const QString &name) |
Descripción detallada
Este objeto puede representar cualquiera de los cuatro tipos diferentes de mensajes (MessageType) que pueden producirse en el bus:
- Llamadas a métodos
- Valores de retorno de métodos
- Emisiones de señales
- Códigos de error
Los objetos de este tipo se crean con las funciones estáticas createError(), createMethodCall() y createSignal(). Utilice la función QDBusConnection::send() para enviar los mensajes.
Documentación de los tipos de miembros
enum QDBusMessage::MessageType
Los tipos de mensajes posibles:
| Constante | Valor | Descripción |
|---|---|---|
QDBusMessage::MethodCallMessage | 1 | un mensaje que representa una llamada de método saliente o entrante |
QDBusMessage::SignalMessage | 4 | un mensaje que representa una emisión de señal saliente o entrante |
QDBusMessage::ReplyMessage | 2 | un mensaje que represente los valores de retorno de una llamada a un método |
QDBusMessage::ErrorMessage | 3 | un mensaje que representa una condición de error en respuesta a una llamada a un método |
QDBusMessage::InvalidMessage | 0 | un mensaje no válido: nunca se establece en los mensajes recibidos de D-Bus |
Documentación de las funciones miembro
QDBusMessage::QDBusMessage()
Construye un objeto QDBusMessage vacío e inválido.
Véase también createError(), createMethodCall() y createSignal().
QDBusMessage::QDBusMessage(const QDBusMessage &other)
Construye una copia del objeto dado por other.
Nota: Los objetos QDBusMessage son compartidos. Las modificaciones realizadas en la copia afectarán también al original. Véase setDelayedReply() para más información.
[noexcept, since 6.11] QDBusMessage::QDBusMessage(QDBusMessage &&other)
Mueve other a este objeto.
Nota: El objeto movido-desde other se coloca en un estado parcialmente formado, en el que las únicas operaciones válidas son la destrucción y la asignación de un nuevo valor.
Esta función se introdujo en Qt 6.11.
[noexcept] QDBusMessage::~QDBusMessage()
Elimina el objeto y libera los recursos que estaban retenidos.
QList<QVariant> QDBusMessage::arguments() const
Devuelve la lista de argumentos que van a ser enviados o fueron recibidos de D-Bus.
Véase también setArguments().
bool QDBusMessage::autoStartService() const
Devuelve el indicador de inicio automático, establecido por setAutoStartService(). Por defecto, esta bandera es true, lo que significa que Qt D-Bus autoarrancará un servicio, si no se está ejecutando ya.
Véase también setAutoStartService().
[static] QDBusMessage QDBusMessage::createError(const QDBusError &error)
Construye un nuevo mensaje DBus que representa la dirección error.
[static] QDBusMessage QDBusMessage::createError(QDBusError::ErrorType type, const QString &msg)
Construye un nuevo mensaje DBus para el tipo de error type utilizando el mensaje msg. Devuelve el mensaje DBus.
[static] QDBusMessage QDBusMessage::createError(const QString &name, const QString &msg)
Crea un nuevo mensaje DBus que representa un error, con las direcciones name y msg.
QDBusMessage QDBusMessage::createErrorReply(const QDBusError &error) const
Construye un nuevo mensaje DBus que representa un mensaje de respuesta de error, a partir del objeto error dado.
QDBusMessage QDBusMessage::createErrorReply(QDBusError::ErrorType type, const QString &msg) const
Construye un nuevo mensaje de respuesta DBus para el tipo de error type utilizando el mensaje msg. Devuelve el mensaje DBus.
QDBusMessage QDBusMessage::createErrorReply(const QString &name, const QString &msg) const
Construye un nuevo mensaje DBus que representa un mensaje de respuesta de error, con los datos name y msg.
[static] QDBusMessage QDBusMessage::createMethodCall(const QString &service, const QString &path, const QString &interface, const QString &method)
Construye un nuevo mensaje DBus que representa una llamada a método. Una llamada a método siempre informa de su dirección de destino (service, path, interface y method).
El bus DBus permite llamar a un método en un objeto remoto dado sin especificar la interfaz de destino, si el nombre del método es único. Sin embargo, si dos interfaces del objeto remoto exportan el mismo nombre de método, el resultado es indefinido (se puede llamar a uno de los dos o devolver un error).
Cuando se utiliza DBus en un contexto peer-to-peer (es decir, no en un bus), el parámetro service es opcional.
La clase QDBusInterface proporciona una abstracción más sencilla de la llamada a métodos síncronos.
Esta función devuelve un objeto QDBusMessage que puede enviarse con QDBusConnection::call().
QDBusMessage QDBusMessage::createReply(const QList<QVariant> &arguments = QList<QVariant>()) const
Construye un nuevo mensaje DBus que representa una respuesta, con la dirección arguments.
QDBusMessage QDBusMessage::createReply(const QVariant &argument) const
Construye un nuevo mensaje DBus que representa una respuesta, con la dirección argument.
[static] QDBusMessage QDBusMessage::createSignal(const QString &path, const QString &interface, const QString &name)
Construye un nuevo mensaje DBus con los datos path, interface y name, que representan una emisión de señal.
Una señal DBus se emite desde una aplicación y es recibida por todas las aplicaciones que están a la escucha de esa señal desde esa interfaz.
El objeto QDBusMessage que se devuelve puede enviarse utilizando la función QDBusConnection::send().
[static] QDBusMessage QDBusMessage::createTargetedSignal(const QString &service, const QString &path, const QString &interface, const QString &name)
Construye un nuevo mensaje DBus con los nombres path, interface y name, que representan una emisión de señal a un destino específico.
Una señal DBus se emite desde una aplicación y sólo la recibe la aplicación propietaria del nombre service de destino.
El objeto QDBusMessage que se devuelve puede enviarse utilizando la función QDBusConnection::send().
QString QDBusMessage::errorMessage() const
Devuelve el mensaje legible por humanos asociado al error recibido.
QString QDBusMessage::errorName() const
Devuelve el nombre del error recibido.
QString QDBusMessage::interface() const
Devuelve la interfaz del método al que se llama (en el caso de una llamada a método) o de la señal de la que se recibe.
bool QDBusMessage::isDelayedReply() const
Devuelve el indicador de respuesta retardada, establecido por setDelayedReply(). Por defecto, esta bandera es falsa, lo que significa que Qt D-Bus generará respuestas automáticas cuando sea necesario.
bool QDBusMessage::isInteractiveAuthorizationAllowed() const
Devuelve si el mensaje tiene activada la bandera ALLOW_INTERACTIVE_AUTHORIZATION.
Véase también setInteractiveAuthorizationAllowed() y QDBusAbstractInterface::isInteractiveAuthorizationAllowed().
bool QDBusMessage::isReplyRequired() const
Devuelve la bandera que indica si este mensaje debe ver una respuesta o no. Esto sólo tiene sentido para method call messages: cualquier otro tipo de mensaje no puede tener respuestas y esta función siempre devolverá false para ellos.
QString QDBusMessage::member() const
Devuelve el nombre de la señal emitida o el nombre del método llamado.
QString QDBusMessage::path() const
Devuelve la ruta del objeto al que se está enviando este mensaje (en el caso de una llamada a un método) o del que se está recibiendo (para una señal).
QString QDBusMessage::service() const
Devuelve el nombre del servicio o la dirección de bus de la llamada al método remoto.
void QDBusMessage::setArguments(const QList<QVariant> &arguments)
Establece los argumentos que van a ser enviados a través del D-Bus a arguments. Estos serán los argumentos de una llamada a método o los parámetros de la señal.
Nótese que QVariantMap con QVariant inválido como valor no está permitido en arguments.
Véase también arguments().
void QDBusMessage::setAutoStartService(bool enable)
Establece el indicador de inicio automático en enable. Este indicador sólo tiene sentido para los mensajes de llamada a método, donde indica al servidor D-Bus que inicie automáticamente el servicio responsable del nombre del servicio o que no lo inicie.
Por defecto esta bandera es verdadera, es decir, un servicio es auto-iniciado. Esto significa que:
Cuando el servicio al que se envía esta llamada al método ya está en ejecución, se le envía la llamada al método. Si el servicio aún no se está ejecutando, se solicita al demonio D-Bus que inicie automáticamente el servicio asignado a este nombre de servicio. Esto se gestiona mediante archivos .service que se colocan en un directorio conocido por el servidor D-Bus. Cada uno de estos archivos contiene un nombre de servicio y la ruta a un programa que debe ejecutarse cuando se solicita este nombre de servicio.
Véase también autoStartService().
void QDBusMessage::setDelayedReply(bool enable) const
Establece si el mensaje se responderá más tarde (si enable es verdadero) o si se debe generar una respuesta automática mediante Qt D-Bus (si enable es falso).
En D-Bus, todas las llamadas a métodos deben generar una respuesta al llamante, a menos que el llamante indique explícitamente lo contrario (véase isReplyRequired()). QtDBus genera automáticamente dichas respuestas para cualquier ranura que esté siendo llamada, pero también permite a las ranuras indicar si asumirán la responsabilidad de enviar la respuesta en un momento posterior, después de que la función haya terminado de procesarse.
Véase también isDelayedReply() y Respuestas diferidas.
void QDBusMessage::setInteractiveAuthorizationAllowed(bool enable)
Activa o desactiva la bandera ALLOW_INTERACTIVE_AUTHORIZATION en un mensaje.
Esta bandera sólo tiene sentido para mensajes de llamada a método (QDBusMessage::MethodCallMessage). Si enable se establece en true, la bandera indica al destinatario de la llamada que la persona que llama al método está preparada para esperar a que se produzca la autorización interactiva (por ejemplo, a través de Polkit) antes de que se procese el método real.
Si enable se establece en false, el indicador no se establece, lo que significa que se espera que el otro extremo tome cualquier decisión de autorización de forma no interactiva y rápida. Este es el valor por defecto.
El error org.freedesktop.DBus.Error.InteractiveAuthorizationRequired indica que la autorización ha fallado, pero podría haber tenido éxito si se hubiera activado este indicador.
Véase también isInteractiveAuthorizationAllowed() y QDBusAbstractInterface::setInteractiveAuthorizationAllowed().
QString QDBusMessage::signature() const
Devuelve la firma de la señal recibida o de los argumentos de salida de una llamada a un método.
[noexcept] void QDBusMessage::swap(QDBusMessage &other)
Intercambia este mensaje con other. Esta operación es muy rápida y nunca falla.
QDBusMessage::MessageType QDBusMessage::type() const
Devuelve el tipo de mensaje.
QDBusMessage &QDBusMessage::operator<<(const QVariant &arg)
Añade el argumento arg a la lista de argumentos que se enviarán por D-Bus en una llamada a método o emisión de señal.
[noexcept] QDBusMessage &QDBusMessage::operator=(QDBusMessage &&other)
Mover-asigna other a este objeto.
Nota: El objeto movido-desde other se coloca en un estado parcialmente formado, en el que las únicas operaciones válidas son la destrucción y la asignación de un nuevo valor.
QDBusMessage &QDBusMessage::operator=(const QDBusMessage &other)
Copia el contenido del objeto dado por other.
Nota: los objetos de QDBusMessage son compartidos. Las modificaciones realizadas en la copia afectarán también al original. Véase setDelayedReply() para más información.
© 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.