QDBusAbstractInterface Class
La classe QDBusAbstractInterface est la classe de base pour toutes les interfaces D-Bus dans la liaison Qt D-Bus, permettant l'accès aux interfaces distantes. Plus d'informations...
| En-tête : | #include <QDBusAbstractInterface> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS DBus)target_link_libraries(mytarget PRIVATE Qt6::DBus) |
| qmake : | QT += dbus |
| Hérite : | QObject |
| Héritée par : |
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 sont également valables pour les 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 à la compilation les paramètres et valeurs de retour corrects, ainsi que la correspondance des types de propriétés et des paramètres de signaux.
Voir aussi Le compilateur QDBus et QDBusInterface.
Documentation des 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 sur cette interface et transmet args à la 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 d'une fonction avec 0, 1 et 2 paramètres et les différents types de paramètres passés dans chacun d'eux (le premier appel à "ProcessWorkUnicode" contiendra une chaîne Unicode, le second appel à "ProcessWork" contiendra une chaîne et un tableau d'octets). Voir call() pour le même exemple dans les appels bloquants (synchrones).
Remarque : avant Qt 5.14, cette fonction acceptait un maximum de huit (8) arguments.
Remarque : les appels de méthodes aux 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)
Place un appel à 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.
Normalement, les appels doivent être effectués à l'aide de asyncCall().
Remarque : les appels de méthode à 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 à l'épreuve des threads.
template <typename... Args> QDBusMessage QDBusAbstractInterface::call(const QString &method, Args &&... args)
Appelle la méthode method sur cette interface et transmet args à la 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 comme le contenu du message d'erreur.
Il peut être utilisé 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 d'une fonction avec 0, 1 et 2 paramètres et les différents types de paramètres passés dans chacun d'eux (le premier appel à "ProcessWorkUnicode" contiendra une chaîne Unicode, le second appel à "ProcessWork" contiendra une chaîne et un tableau d'octets). Voir asyncCall() pour le même exemple dans les appels non bloquants (asynchrones).
Remarque : avant Qt 5.14, cette fonction acceptait un maximum de 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 sur cette interface et transmet args à la méthode. Tous les args doivent être convertibles en QVariant.
Si mode est NoWaitForReply, cette fonction retournera immédiatement après l'appel, sans attendre une réponse de la méthode distante. Sinon, mode indique si cette fonction doit activer la boucle d'événements Qt en attendant la réponse.
Si cette fonction réintègre la boucle d'événements Qt afin d'attendre la réponse, elle exclut toute entrée de l'utilisateur. Pendant l'attente, elle peut envoyer des signaux et d'autres appels de méthode à votre application. Par conséquent, elle doit être prête à gérer une réentrance chaque fois qu'un appel est placé avec call().
Remarque : avant Qt 5.14, cette fonction acceptait un maximum de huit (8) arguments.
Il s'agit d'une fonction surchargée.
Voir aussi callWithArgumentList().
QDBusMessage QDBusAbstractInterface::callWithArgumentList(QDBus::CallMode mode, const QString &method, const QList<QVariant> &args)
Place un appel à 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 un message normal QDBusMessage::ReplyMessage (indiquant un succès) ou QDBusMessage::ErrorMessage (si l'appel a échoué). Le paramètre mode indique comment l'appel doit être placé.
Si l'appel aboutit, lastError() sera effacé ; dans le cas contraire, il contiendra l'erreur produite par l'appel.
Normalement, vous devriez placer les appels en utilisant call().
Attention : Si vous utilisez UseEventLoop, votre code doit être prêt à gérer toute réentrance : d'autres appels de méthodes et signaux peuvent être délivrés avant le retour de cette fonction, ainsi que d'autres signaux et événements mis en file d'attente par Qt.
Remarque : cette fonction est à l'épreuve des threads.
bool QDBusAbstractInterface::callWithCallback(const QString &method, const QList<QVariant> &args, QObject *receiver, const char *returnMethod, const char *errorMethod)
Place un appel à la méthode distante spécifiée par method sur cette interface, en utilisant args comme arguments. Cette fonction revient immédiatement après avoir mis l'appel en file d'attente. La réponse de la fonction distante est transmise à returnMethod sur l'objet receiver. En cas d'erreur, la fonction errorMethod sur l'objet receiver est appelée à la place.
Cette fonction renvoie true si la mise en file d'attente réussit. Elle n'indique pas que l'appel exécuté a réussi. En cas d'échec, la fonction errorMethod est appelée. Si la mise en file d'attente a échoué, cette fonction renvoie false et aucun slot ne sera appelé.
L'adresse returnMethod doit avoir comme paramètres les types renvoyés par l'appel de la fonction. En option, elle peut avoir un paramètre QDBusMessage comme dernier ou unique paramètre. Le errorMethod doit avoir un QDBusError comme seul paramètre.
Remarque : les appels de méthode à 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.
Place un appel à la méthode distante spécifiée par method sur cette interface, en utilisant args comme arguments. Cette fonction revient immédiatement après avoir mis l'appel en file d'attente. La réponse de la fonction distante ou toute erreur émise par celle-ci est transmise à l'emplacement slot de l'objet receiver.
Cette fonction renvoie true si la mise en file d'attente a réussi : elle n'indique pas que l'appel a réussi. En cas d'échec, le slot sera appelé avec un message d'erreur. lastError() ne sera pas activé 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 aussi setInteractiveAuthorizationAllowed() et QDBusMessage::setInteractiveAuthorizationAllowed().
bool QDBusAbstractInterface::isValid() const
Renvoie true s'il s'agit d'une référence valide à un objet distant. Il renvoie false s'il y a eu une erreur lors de la création de cette interface (par exemple, si l'application distante n'existe pas).
Remarque : lorsqu'il s'agit d'objets distants, il n'est pas toujours possible de déterminer s'ils existent lors de la création d'une interface QDBusInterface.
QDBusError QDBusAbstractInterface::lastError() const
Renvoie l'erreur produite par la dernière opération, ou une erreur invalide si la dernière opération n'a pas produit 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)
Indique si, pour les appels asynchrones, l'appelant est prêt à attendre l'autorisation interactive.
Si enable vaut 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 cadre d'autorisation est déployé qui permet éventuellement une autorisation interactive.
La valeur par défaut est false.
Cette fonction a été introduite dans Qt 6.7.
Voir aussi isInteractiveAuthorizationAllowed() et QDBusMessage::setInteractiveAuthorizationAllowed().
void QDBusAbstractInterface::setTimeout(int timeout)
Définit le délai d'attente en millisecondes pour tous les futurs appels DBus à timeout. -1 correspond au délai d'attente DBus par défaut (habituellement 25 secondes).
Voir aussi timeout().
int QDBusAbstractInterface::timeout() const
Renvoie la valeur actuelle du timeout en millisecondes. -1 correspond au délai d'attente par défaut de DBus (habituellement 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.