Sur cette page

QDBusAbstractInterface Class

La classe `QDBusAbstractInterface` est la classe de base de toutes les interfaces D-Bus de la liaison ` Qt D-Bus `, permettant d'accéder à des interfaces distantes. En savoir plus...

En-tête : #include <QDBusAbstractInterface>
CMake : find_package(Qt6 REQUIRED COMPONENTS DBus)
target_link_libraries(mytarget PRIVATE Qt6::DBus)
qmake : QT += dbus
Hérite de : QObject
Hérité par :

QDBusConnectionInterface et QDBusInterface

Fonctions publiques

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

Description détaillée

Les classes de code généré dérivent également de QDBusAbstractInterface ; toutes les méthodes décrites ici s'appliquent également aux classes de code généré. En plus de celles décrites ici, les classes de code généré fournissent des fonctions membres pour les méthodes distantes, ce qui permet de vérifier, lors de la compilation, que les paramètres et les valeurs de retour sont corrects, ainsi que la correspondance des types de propriétés et des paramètres de signaux.

Voir également Le compilateur QDBus et QDBusInterface.

Documentation sur les fonctions membres

[virtual noexcept] QDBusAbstractInterface::~QDBusAbstractInterface()

Libère les ressources de cet objet.

template <typename... Args> QDBusPendingCall QDBusAbstractInterface::asyncCall(const QString &method, Args &&... args)

Appelle la méthode ` method ` de cette interface et transmet ` args ` à cette méthode. Tous les ` args ` doivent être convertibles en ` QVariant`.

Les paramètres de call sont transmis à la fonction distante via D-Bus en tant qu’arguments d’entrée. L’objet QDBusPendingCall renvoyé peut être utilisé pour obtenir des informations sur la réponse.

Il peut être utilisé de la manière suivante :

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

Cet exemple illustre l'appel de la fonction avec 0, 1 et 2 paramètres et montre les différents types de paramètres transmis dans chaque cas (le premier appel à "ProcessWorkUnicode" contiendra une chaîne Unicode, le deuxième appel à "ProcessWork" contiendra une chaîne et un tableau d'octets). Voir call() pour le même exemple avec des appels bloquants (synchrones).

Remarque : avant Qt 5.14, cette fonction n’acceptait au maximum que huit (8) arguments.

Remarque : les appelsde méthode vers des objets ` QDBusServer` locaux ne sont jamais asynchrones en raison de limitations d’implémentation.

Voir également asyncCallWithArgumentList().

QDBusPendingCall QDBusAbstractInterface::asyncCallWithArgumentList(const QString &method, const QList<QVariant> &args)

Lance un appel vers la méthode distante spécifiée par ` method ` sur cette interface, en utilisant ` args ` comme arguments. Cette fonction renvoie un objet ` QDBusPendingCall ` qui peut être utilisé pour suivre l'état de la réponse et accéder à son contenu une fois qu'elle est arrivée.

En règle générale, vous devez effectuer les appels à l'aide de ` asyncCall()`

Remarque : les appelsde méthode vers des objets enregistrés par l’application elle-même ne sont jamais asynchrones en raison de limitations d’implémentation.

Remarque : cette fonction est thread-safe.

template <typename... Args> QDBusMessage QDBusAbstractInterface::call(const QString &method, Args &&... args)

Appelle la méthode « method » de cette interface et transmet « args » à cette méthode. Tous les « args » doivent être convertibles en « QVariant ».

Les paramètres de call sont transmis à la fonction distante via D-Bus en tant qu’arguments d’entrée. Les arguments de sortie sont renvoyés dans la réponse QDBusMessage. Si la réponse est une réponse d’erreur, lastError() sera également défini sur le contenu du message d’erreur.

Elle peut être utilisée de la manière suivante :

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

Cet exemple illustre l’appel de la fonction avec 0, 1 et 2 paramètres et montre les différents types de paramètres transmis dans chaque cas (le premier appel à "ProcessWorkUnicode" contiendra une chaîne Unicode, le deuxième appel à "ProcessWork" contiendra une chaîne et un tableau d’octets). Voir asyncCall() pour le même exemple avec des appels non bloquants (asynchrones).

Remarque : avant Qt 5.14, cette fonction n'acceptait au maximum que huit (8) arguments.

Voir également callWithArgumentList().

template <typename... Args> QDBusMessage QDBusAbstractInterface::call(QDBus::CallMode mode, const QString &method, Args &&... args)

Appelle la méthode ` method ` de cette interface et transmet ` args ` à cette méthode. Tous les objets de type ` args ` doivent être convertibles en ` QVariant`.

Si mode est NoWaitForReply, alors cette fonction retourne immédiatement après avoir lancé l’appel, sans attendre la réponse de la méthode distante. Sinon, mode indique si cette fonction doit activer la boucle d’événements Qt en attendant l’arrivée de la réponse.

Si cette fonction réintègre la boucle d'événements Qt afin d'attendre la réponse, elle exclura les entrées utilisateur. Pendant l'attente, elle peut transmettre des signaux et d'autres appels de méthode à votre application. Par conséquent, celle-ci doit être prête à gérer une réentrance chaque fois qu'un appel est effectué avec call().

Remarque : Avant Qt 5.14, cette fonction n’acceptait au maximum que huit (8) arguments.

Il s'agit d'une fonction surchargée.

Voir également ` callWithArgumentList()`.

QDBusMessage QDBusAbstractInterface::callWithArgumentList(QDBus::CallMode mode, const QString &method, const QList<QVariant> &args)

Lance un appel vers la méthode distante spécifiée par ` method ` sur cette interface, en utilisant ` args ` comme arguments. Cette fonction renvoie le message reçu en réponse, qui peut être une « QDBusMessage::ReplyMessage » (indiquant que l'opération a réussi) ou « QDBusMessage::ErrorMessage » (si l'appel a échoué). Le paramètre ` mode ` spécifie comment cet appel doit être effectué.

Si l'appel aboutit, lastError() sera vidé ; dans le cas contraire, il contiendra l'erreur générée par cet appel.

En règle générale, vous devez effectuer les appels à l’aide de call().

Avertissement : si vous utilisez UseEventLoop, votre code doit être prêt à gérer toute réentrance : d’autres appels de méthode et signaux peuvent être émis avant que cette fonction ne revienne, tout comme d’autres signaux et événements mis en file d’attente par Qt.

Remarque : cette fonction est sûre pour les threads.

bool QDBusAbstractInterface::callWithCallback(const QString &method, const QList<QVariant> &args, QObject *receiver, const char *returnMethod, const char *errorMethod)

Lance un appel vers la méthode distante spécifiée par ` method ` sur cette interface, en utilisant ` args ` comme arguments. Cette fonction retourne immédiatement après avoir mis l’appel en file d’attente. La réponse de la fonction distante est transmise à la méthode ` returnMethod ` de l’objet ` receiver`. Si une erreur se produit, la méthode ` errorMethod ` de l’objet ` receiver ` est appelée à la place.

Cette fonction renvoie ` true ` si la mise en file d’attente réussit. Cela n’indique pas que l’appel exécuté a abouti. En cas d’échec, la fonction ` errorMethod ` est appelée. Si la mise en file d’attente échoue, cette fonction renvoie ` false ` et aucun slot ne sera appelé.

La fonction ` returnMethod ` doit avoir pour paramètres les types renvoyés par l’appel de fonction. Elle peut éventuellement comporter un paramètre ` QDBusMessage ` en tant que dernier ou unique paramètre. La fonction ` errorMethod ` doit avoir pour seul paramètre un objet ` QDBusError `.

Remarque : les appelsde méthode vers des objets enregistrés par l’application elle-même ne sont jamais asynchrones en raison de limitations d’implémentation.

Voir également QDBusError et QDBusMessage.

bool QDBusAbstractInterface::callWithCallback(const QString &method, const QList<QVariant> &args, QObject *receiver, const char *slot)

Cette fonction est obsolète. Veuillez utiliser la version surchargée.

Lance un appel à la méthode distante spécifiée par method sur cette interface, en utilisant args comme arguments. Cette fonction retourne immédiatement après avoir mis l'appel en file d'attente. La réponse de la fonction distante ou les erreurs qu'elle pourrait générer sont transmises au slot slot de l'objet receiver.

Cette fonction renvoie ` true ` si la mise en file d’attente a réussi : cela n’indique pas que l’appel a abouti. En cas d’échec, le slot sera appelé avec un message d’erreur. ` lastError()` ne sera pas défini dans ces circonstances.

Il s'agit d'une fonction surchargée.

Voir également QDBusError et QDBusMessage.

QDBusConnection QDBusAbstractInterface::connection() const

Renvoie la connexion à laquelle cette interface est associée.

QString QDBusAbstractInterface::interface() const

Renvoie le nom de cette interface.

[since 6.7] bool QDBusAbstractInterface::isInteractiveAuthorizationAllowed() const

Indique si, pour les appels asynchrones, l'appelant est prêt à attendre l'autorisation interactive.

La valeur par défaut est ` false`.

Cette fonction a été introduite dans Qt 6.7.

Voir également ` setInteractiveAuthorizationAllowed()` et ` QDBusMessage::setInteractiveAuthorizationAllowed()`.

bool QDBusAbstractInterface::isValid() const

Renvoie ` true ` si la référence à l'objet distant est valide. Elle renvoie ` false ` si une erreur s'est produite lors de la création de cette interface (par exemple, si l'application distante n'existe pas).

Remarque : lorsqu'on traite avec des objets distants, il n'est pas toujours possible de déterminer s'ils existent au moment de la création d'une QDBusInterface.

QDBusError QDBusAbstractInterface::lastError() const

Renvoie l'erreur générée par la dernière opération, ou une erreur « non valide » si la dernière opération n'a pas généré d'erreur.

QString QDBusAbstractInterface::path() const

Renvoie le chemin d'accès à l'objet auquel cette interface est associée.

QString QDBusAbstractInterface::service() const

Renvoie le nom du service auquel cette interface est associée.

[since 6.7] void QDBusAbstractInterface::setInteractiveAuthorizationAllowed(bool enable)

Détermine si, pour les appels asynchrones, l’appelant est prêt à attendre une autorisation interactive.

Si l'option « enable » est définie sur « true », les messages D-Bus générés pour les appels asynchrones via cette interface activeront l'indicateur « ALLOW_INTERACTIVE_AUTHORIZATION ».

Cet indicateur n’est utile que lorsque du code non privilégié appelle une méthode plus privilégiée et qu’un framework d’autorisation permettant une autorisation éventuellement interactive est déployé.

La valeur par défaut est ` false`.

Cette fonction a été introduite dans Qt 6.7.

Voir également isInteractiveAuthorizationAllowed() et QDBusMessage::setInteractiveAuthorizationAllowed().

void QDBusAbstractInterface::setTimeout(int timeout)

Définit le délai d'expiration, en millisecondes, pour tous les futurs appels DBus vers timeout. La valeur -1 correspond au délai d'expiration DBus par défaut (généralement 25 secondes).

Voir également timeout().

int QDBusAbstractInterface::timeout() const

Renvoie la valeur actuelle du délai d'expiration en millisecondes. La valeur -1 correspond au délai d'expiration par défaut de DBus (généralement 25 secondes).

Voir aussi 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.