QDBusAbstractInterface Class
La clase QDBusAbstractInterface es la clase base para todas las interfaces D-Bus en el enlace Qt D-Bus, permitiendo el acceso a interfaces remotas. Más...
| Cabecera: | #include <QDBusAbstractInterface> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS DBus)target_link_libraries(mytarget PRIVATE Qt6::DBus) |
| qmake: | QT += dbus |
| Hereda: | QObject |
| Heredado por: |
Funciones Públicas
| virtual | ~QDBusAbstractInterface() |
| QDBusPendingCall | asyncCall(const QString &method, Args &&... args) |
| QDBusPendingCall | asyncCallWithArgumentList(const QString &method, const QList<QVariant> &args) |
| QDBusMessage | call(const QString &method, Args &&... args) |
| QDBusMessage | call(QDBus::CallMode mode, const QString &method, Args &&... args) |
| QDBusMessage | callWithArgumentList(QDBus::CallMode mode, const QString &method, const QList<QVariant> &args) |
| bool | callWithCallback(const QString &method, const QList<QVariant> &args, QObject *receiver, const char *returnMethod, const char *errorMethod) |
| bool | callWithCallback(const QString &method, const QList<QVariant> &args, QObject *receiver, const char *slot) |
| QDBusConnection | connection() const |
| QString | interface() const |
(since 6.7) bool | isInteractiveAuthorizationAllowed() const |
| bool | isValid() const |
| QDBusError | lastError() const |
| QString | path() const |
| QString | service() const |
(since 6.7) void | setInteractiveAuthorizationAllowed(bool enable) |
| void | setTimeout(int timeout) |
| int | timeout() const |
Descripción detallada
Las clases de código generado también derivan de QDBusAbstractInterface, todos los métodos descritos aquí también son válidos para las clases de código generado. Además de los descritos aquí, las clases de código generado proporcionan funciones miembro para los métodos remotos, que permiten la comprobación en tiempo de compilación de los parámetros y valores de retorno correctos, así como la correspondencia de tipos de propiedades y la correspondencia de parámetros de señales.
Véase también El compilador QDBus y QDBusInterface.
Documentación de las funciones miembro
[virtual noexcept] QDBusAbstractInterface::~QDBusAbstractInterface()
Libera los recursos de este objeto.
template <typename... Args> QDBusPendingCall QDBusAbstractInterface::asyncCall(const QString &method, Args &&... args)
Llama al método method en esta interfaz y pasa args al método. Todos los args deben ser convertibles a QVariant.
Los parámetros de call se pasan a la función remota a través de D-Bus como argumentos de entrada. El objeto QDBusPendingCall devuelto puede utilizarse para obtener información sobre la respuesta.
Se puede utilizar de la siguiente manera:
QDBusPendingCall pcall = interface->asyncCall("GetAPIVersion"_L1); auto watcher = new QDBusPendingCallWatcher(pcall, this); QObject::connect(watcher, &QDBusPendingCallWatcher::finished, this, [&](QDBusPendingCallWatcher *w) { QString value = retrieveValue(); QDBusPendingReply<int> reply(*w); QDBusPendingCall pcall; if (reply.argumentAt<0>() >= 14) pcall = interface->asyncCall("ProcessWorkUnicode"_L1, value); else pcall = interface->asyncCall("ProcessWork"_L1, "UTF-8"_L1, value.toUtf8()); w = new QDBusPendingCallWatcher(pcall); QObject::connect(w, &QDBusPendingCallWatcher::finished, this, &Abstract_DBus_Interface::callFinishedSlot); });
Este ejemplo ilustra la llamada a la función con 0, 1 y 2 parámetros e ilustra los diferentes tipos de parámetros pasados en cada uno (la primera llamada a "ProcessWorkUnicode" contendrá una cadena Unicode, la segunda llamada a "ProcessWork" contendrá una cadena y una matriz de bytes). Ver call() para el mismo ejemplo en llamadas de bloqueo (síncronas).
Nota: Antes de Qt 5.14, esta función aceptaba un máximo de sólo ocho (8) argumentos.
Nota: Las llamadas a métodos locales QDBusServer's nunca son asíncronas debido a limitaciones de implementación.
Véase también asyncCallWithArgumentList().
QDBusPendingCall QDBusAbstractInterface::asyncCallWithArgumentList(const QString &method, const QList<QVariant> &args)
Realiza una llamada al método remoto especificado por method en esta interfaz, utilizando args como argumentos. Esta función devuelve un objeto QDBusPendingCall que puede utilizarse para seguir el estado de la respuesta y acceder a su contenido una vez que ha llegado.
Normalmente, las llamadas deben realizarse utilizando asyncCall().
Nota: Las llamadas a métodos de objetos registrados por la propia aplicación nunca son asíncronas debido a limitaciones de implementación.
Nota: Esta función es thread-safe.
template <typename... Args> QDBusMessage QDBusAbstractInterface::call(const QString &method, Args &&... args)
Llama al método method en esta interfaz y pasa args al método. Todos los args deben ser convertibles a QVariant.
Los parámetros de call se pasan a la función remota a través de D-Bus como argumentos de entrada. Los argumentos de salida se devuelven en la respuesta QDBusMessage. Si la respuesta es una respuesta de error, lastError() también se establecerá en el contenido del mensaje de error.
Se puede utilizar de la siguiente manera:
QString value = retrieveValue(); QDBusMessage reply; QDBusReply<int> api = interface->call("GetAPIVersion"_L1); if (api >= 14) reply = interface->call("ProcessWorkUnicode"_L1, value); else reply = interface->call("ProcessWork"_L1, "UTF-8"_L1, value.toUtf8());
Este ejemplo ilustra la llamada a funciones con 0, 1 y 2 parámetros e ilustra diferentes tipos de parámetros pasados en cada uno (la primera llamada a "ProcessWorkUnicode" contendrá una cadena Unicode, la segunda llamada a "ProcessWork" contendrá una cadena y una matriz de bytes). Véase asyncCall() para el mismo ejemplo en llamadas no bloqueantes (asíncronas).
Nota: Antes de Qt 5.14, esta función aceptaba un máximo de sólo ocho (8) argumentos.
Véase también callWithArgumentList().
template <typename... Args> QDBusMessage QDBusAbstractInterface::call(QDBus::CallMode mode, const QString &method, Args &&... args)
Llama al método method en esta interfaz y pasa args al método. Todos los args deben ser convertibles a QVariant.
Si mode es NoWaitForReply, entonces esta función regresará inmediatamente después de realizar la llamada, sin esperar una respuesta del método remoto. En caso contrario, mode indica si esta función debe activar el bucle de eventos Qt mientras espera a que llegue la respuesta.
Si esta función vuelve a entrar en el bucle de eventos de Qt para esperar la respuesta, excluirá la entrada del usuario. Durante la espera, puede enviar señales y otras llamadas a métodos de su aplicación. Por lo tanto, debe estar preparada para manejar una reentrada siempre que se realice una llamada con call().
Nota: Antes de Qt 5.14, esta función aceptaba un máximo de sólo ocho (8) argumentos.
Se trata de una función sobrecargada.
Véase también callWithArgumentList().
QDBusMessage QDBusAbstractInterface::callWithArgumentList(QDBus::CallMode mode, const QString &method, const QList<QVariant> &args)
Realiza una llamada al método remoto especificado por method en esta interfaz, utilizando args como argumentos. Esta función devuelve el mensaje que se recibió como respuesta, que puede ser un QDBusMessage::ReplyMessage normal (indicando éxito) o QDBusMessage::ErrorMessage (si la llamada falló). El parámetro mode especifica cómo debe realizarse esta llamada.
Si la llamada tiene éxito, se borrará lastError(); de lo contrario, contendrá el error que produjo esta llamada.
Normalmente, debería realizar las llamadas utilizando call().
Advertencia: Si utiliza UseEventLoop, su código debe estar preparado para hacer frente a cualquier reentrada: otras llamadas a métodos y señales pueden ser entregadas antes de que esta función regrese, así como otras señales y eventos Qt en cola.
Nota: Esta función es thread-safe.
bool QDBusAbstractInterface::callWithCallback(const QString &method, const QList<QVariant> &args, QObject *receiver, const char *returnMethod, const char *errorMethod)
Realiza una llamada al método remoto especificado por method en esta interfaz, utilizando args como argumentos. Esta función regresa inmediatamente después de poner en cola la llamada. La respuesta de la función remota se envía a returnMethod en el objeto receiver. Si se produce un error, se llama en su lugar a errorMethod en el objeto receiver.
Esta función devuelve true si la puesta en cola tiene éxito. No indica que la llamada ejecutada haya tenido éxito. Si falla, se llama a errorMethod. Si la puesta en cola falla, esta función devuelve false y no se llamará a ninguna ranura.
El returnMethod debe tener como parámetros los tipos devueltos por la llamada a la función. Opcionalmente, puede tener un parámetro QDBusMessage como último o único parámetro. El errorMethod debe tener un QDBusError como único parámetro.
Nota: Las llamadas a métodos de objetos registrados por la propia aplicación nunca son asíncronas debido a limitaciones de implementación.
Véase también QDBusError y QDBusMessage.
bool QDBusAbstractInterface::callWithCallback(const QString &method, const QList<QVariant> &args, QObject *receiver, const char *slot)
Esta función está obsoleta. Por favor, utilice la versión sobrecargada.
Realiza una llamada al método remoto especificado por method en esta interfaz, utilizando args como argumentos. Esta función regresa inmediatamente después de poner en cola la llamada. La respuesta de la función remota o cualquier error emitido por ella se entregan a la ranura slot del objeto receiver.
Esta función devuelve true si la puesta en cola ha tenido éxito: no indica que la llamada haya tenido éxito. Si falló, se llamará a la ranura con un mensaje de error. lastError() no se activará en esas circunstancias.
Se trata de una función sobrecargada.
Véase también QDBusError y QDBusMessage.
QDBusConnection QDBusAbstractInterface::connection() const
Devuelve la conexión a la que está asociada esta interfaz.
QString QDBusAbstractInterface::interface() const
Devuelve el nombre de esta interfaz.
[since 6.7] bool QDBusAbstractInterface::isInteractiveAuthorizationAllowed() const
Devuelve si, para las llamadas asíncronas, la persona que llama está preparada para esperar la autorización interactiva.
El valor predeterminado es false.
Esta función se introdujo en Qt 6.7.
Véase también setInteractiveAuthorizationAllowed() y QDBusMessage::setInteractiveAuthorizationAllowed().
bool QDBusAbstractInterface::isValid() const
Devuelve true si se trata de una referencia válida a un objeto remoto. Devuelve false si se ha producido un error durante la creación de esta interfaz (por ejemplo, si la aplicación remota no existe).
Nota: cuando se trata de objetos remotos, no siempre es posible determinar si existe al crear un QDBusInterface.
QDBusError QDBusAbstractInterface::lastError() const
Devuelve el error que produjo la última operación, o un error no válido si la última operación no produjo ningún error.
QString QDBusAbstractInterface::path() const
Devuelve la ruta del objeto al que está asociada esta interfaz.
QString QDBusAbstractInterface::service() const
Devuelve el nombre del servicio al que está asociada esta interfaz.
[since 6.7] void QDBusAbstractInterface::setInteractiveAuthorizationAllowed(bool enable)
Configura si, para las llamadas asíncronas, el llamante está preparado para esperar la autorización interactiva.
Si enable se establece en true, los mensajes D-Bus generados para llamadas asíncronas a través de esta interfaz establecerán la bandera ALLOW_INTERACTIVE_AUTHORIZATION.
Esta bandera sólo es útil cuando código sin privilegios llama a una llamada a un método con más privilegios, y se despliega un marco de autorización que permite posiblemente una autorización interactiva.
El valor predeterminado es false.
Esta función se introdujo en Qt 6.7.
Véase también isInteractiveAuthorizationAllowed() y QDBusMessage::setInteractiveAuthorizationAllowed().
void QDBusAbstractInterface::setTimeout(int timeout)
Establece el tiempo de espera en milisegundos para todas las futuras llamadas DBus a timeout. -1 significa el tiempo de espera DBus por defecto (normalmente 25 segundos).
Véase también timeout().
int QDBusAbstractInterface::timeout() const
Devuelve el valor actual del tiempo de espera en milisegundos. -1 significa el tiempo de espera por defecto de DBus (normalmente 25 segundos).
Véase también setTimeout().
© 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.