Sur cette page

QDBusConnection Class

La classe QDBusConnection représente une connexion au démon de bus D-Bus. Plus d'informations...

En-tête : #include <QDBusConnection>
CMake : find_package(Qt6 REQUIRED COMPONENTS DBus)
target_link_libraries(mytarget PRIVATE Qt6::DBus)
qmake : QT += dbus

Types publics

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

Fonctions publiques

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)

Membres publics statiques

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

Description détaillée

Cette classe est le point de départ d'une session D-Bus. Grâce à elle, vous pouvez accéder à des objets et à des interfaces distants, connecter des signaux distants aux emplacements de votre objet, enregistrer des objets, etc.

Les connexions D-Bus sont créées à l'aide de la fonction connectToBus(), qui ouvre une connexion avec le démon du serveur et effectue les premiers échanges, en associant cette connexion à un nom. Les tentatives ultérieures de connexion sous le même nom renverront la même connexion.

La connexion est ensuite coupée à l'aide de la fonction disconnectFromBus().

Une fois déconnectée, appeler connectToBus() ne rétablira pas la connexion, vous devez créer une nouvelle instance de QDBusConnection.

Par commodité pour les deux types de connexion les plus courants, les fonctions sessionBus() et systemBus() renvoient des connexions ouvertes au démon du serveur de session et au démon du serveur système, respectivement. Ces connexions sont ouvertes lors de la première utilisation et sont fermées lors de l'exécution du destructeur QCoreApplication.

D-Bus prend également en charge les connexions peer-to-peer, sans nécessiter de démon serveur de bus. Grâce à cette fonctionnalité, deux applications peuvent se parler et échanger des messages. Pour ce faire, il suffit de transmettre une adresse à la fonction connectToBus(), qui a été ouverte par une autre application D-Bus à l'aide de QDBusServer.

Type de membre Documentation

enum QDBusConnection::BusType

Spécifie le type de connexion de bus. Les types de bus valides sont les suivants

ConstanteValeurDescription
QDBusConnection::SessionBus0le bus de session, associé à la session de bureau en cours d'exécution
QDBusConnection::SystemBus1le bus système, utilisé pour communiquer avec les processus de l'ensemble du système
QDBusConnection::ActivationBus2le bus d'activation, l'"alias" du bus qui a démarré le service.

Sur le bus de session, on peut trouver d'autres applications du même utilisateur qui partagent la même session de bureau (d'où le nom). Dans le bus système, en revanche, on trouve généralement des processus partagés par l'ensemble du système.

enum QDBusConnection::ConnectionCapability
flags QDBusConnection::ConnectionCapabilities

Cette énumération décrit les capacités disponibles pour une connexion D-Bus.

ConstanteValeurDescription
QDBusConnection::UnixFileDescriptorPassing0x0001permet de transmettre des descripteurs de fichiers Unix à d'autres processus (voir QDBusUnixFileDescriptor).

Le type ConnectionCapabilities est un typedef pour QFlags<ConnectionCapability>. Il stocke une combinaison OU de valeurs d'aptitude à la connexion.

Voir également connectionCapabilities().

enum QDBusConnection::RegisterOption
flags QDBusConnection::RegisterOptions

Spécifie les options d'enregistrement des objets avec la connexion. Les valeurs possibles sont les suivantes

ConstanteConstante ValeurDescription de l'option
QDBusConnection::ExportAdaptors0x01exporter le contenu des adaptateurs trouvés dans cet objet
QDBusConnection::ExportScriptableSlots0x10exporter les emplacements scriptables de cet objet
QDBusConnection::ExportScriptableSignals0x20exporter les signaux scriptables de cet objet
QDBusConnection::ExportScriptableProperties0x40exporter les propriétés scriptables de cet objet
QDBusConnection::ExportScriptableInvokables0x80exporter les invocables scriptables de cet objet
QDBusConnection::ExportScriptableContents0xf0forme abrégée pour ExportScriptableSlots | ExportScriptableSignals | ExportScriptableProperties
QDBusConnection::ExportNonScriptableSlots0x100exporter les emplacements non scriptables de cet objet
QDBusConnection::ExportNonScriptableSignals0x200exporter les signaux non scriptables de cet objet
QDBusConnection::ExportNonScriptableProperties0x400exporter les propriétés non scriptables de cet objet
QDBusConnection::ExportNonScriptableInvokables0x800exporter les invokables non scriptibles de cet objet
QDBusConnection::ExportNonScriptableContents0xf00forme abrégée pour ExportNonScriptableSlots | ExportNonScriptableSignals | ExportNonScriptableProperties
QDBusConnection::ExportAllSlotsExportScriptableSlots|ExportNonScriptableSlotsexporter tous les emplacements de cet objet
QDBusConnection::ExportAllSignalsExportScriptableSignals|ExportNonScriptableSignalsexporter tous les signaux de cet objet
QDBusConnection::ExportAllPropertiesExportScriptableProperties|ExportNonScriptablePropertiesexporter toutes les propriétés de cet objet
QDBusConnection::ExportAllInvokablesExportScriptableInvokables|ExportNonScriptableInvokablesexporter tous les invocables de cet objet
QDBusConnection::ExportAllContentsExportScriptableContents|ExportNonScriptableContentsexporter tout le contenu de cet objet
QDBusConnection::ExportChildObjects0x1000exporter les objets enfants de cet objet

Le type RegisterOptions est un typedef pour QFlags<RegisterOption>. Il stocke une combinaison OU de valeurs RegisterOption.

Voir également registerObject(), QDBusAbstractAdaptor, et Utiliser des adaptateurs.

enum QDBusConnection::UnregisterMode

Mode de désenregistrement d'un chemin d'accès à un objet :

ConstanteValeurDescription du mode de désenregistrement
QDBusConnection::UnregisterNode0désenregistrer ce nœud uniquement : ne pas désenregistrer les objets enfants
QDBusConnection::UnregisterTree1désenregistrer ce nœud et tous ses sous-arbres

Notez toutefois que si cet objet a été enregistré avec l'option ExportChildObjects, UnregisterNode désenregistrera également les objets enfants.

Documentation des fonctions membres

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

Crée un objet QDBusConnection attaché à la connexion portant le nom name.

Cela n'ouvre pas la connexion. Vous devez appeler connectToBus() pour l'ouvrir.

QDBusConnection::QDBusConnection(const QDBusConnection &other)

Crée une copie de la connexion other.

[noexcept] QDBusConnection::~QDBusConnection()

Se débarrasse de cet objet. Cela ne ferme pas la connexion : vous devez appeler disconnectFromBus() pour le faire.

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

Envoie l'adresse message via cette connexion et revient immédiatement. Cette fonction ne convient qu'aux appels de méthode. Elle renvoie un objet de type QDBusPendingCall qui peut être utilisé pour suivre l'état de la réponse.

Si aucune réponse n'est reçue dans les timeout millisecondes, une erreur automatique sera émise, indiquant l'expiration de l'appel. La valeur par défaut de timeout est -1, qui sera remplacée par une valeur définie par l'implémentation et adaptée aux communications inter-processus (en général, 25 secondes). Ce délai est également la limite supérieure de l'attente dans QDBusPendingCall::waitForFinished().

Voir la fonction QDBusInterface::asyncCall() pour une manière plus conviviale de passer des appels.

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

QString QDBusConnection::baseService() const

Renvoie le nom de connexion unique pour cette connexion, si cet objet QDBusConnection est connecté, ou un QString vide dans le cas contraire.

Un nom de connexion unique est une chaîne de caractères de la forme ":x.xxx" (où x sont des chiffres décimaux) qui est attribuée par le démon du serveur D-Bus lors de la connexion. Il identifie de manière unique ce client dans le bus.

Cette fonction renvoie une adresse QString vide pour les connexions d'égal à égal.

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

Envoie le message message sur cette connexion et bloque l'attente d'une réponse pendant au maximum timeout millisecondes. Cette fonction ne convient qu'aux appels de méthode. Elle renvoie le message de réponse comme valeur de retour, qui sera du type QDBusMessage::ReplyMessage ou QDBusMessage::ErrorMessage.

Si aucune réponse n'est reçue dans les timeout millisecondes, une erreur automatique sera émise, indiquant l'expiration de l'appel. La valeur par défaut de timeout est -1, qui sera remplacée par une valeur définie par l'implémentation et adaptée aux communications inter-processus (en général, 25 secondes).

Voir la fonction QDBusInterface::call() pour une manière plus conviviale de passer des appels.

Attention : Si mode est QDBus::BlockWithGui, cette fonction réintègre la boucle événementielle de Qt XML afin d'attendre la réponse. Pendant cette attente, elle peut envoyer des signaux et d'autres appels de méthode à votre application. Par conséquent, elle doit être préparée à gérer une réentrance chaque fois qu'un appel est placé avec call().

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

Envoie le message message sur cette connexion et revient immédiatement. Lorsque la réponse est reçue, la méthode returnMethod est appelée dans l'objet receiver. En cas d'erreur, la méthode errorMethod sera appelée à la place.

Si aucune réponse n'est reçue dans les timeout millisecondes, une erreur automatique sera émise indiquant l'expiration de l'appel. La valeur par défaut de timeout est -1, qui sera remplacée par une valeur définie par l'implémentation et adaptée aux communications inter-processus (en général, 25 secondes).

Cette fonction ne convient qu'aux appels de méthodes. Il est garanti que le slot sera appelé exactement une fois avec la réponse, tant que les types de paramètres correspondent et qu'aucune erreur ne se produit.

Retourne true si le message a été envoyé, ou false si le message n'a pas pu être envoyé.

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

Connecte le signal spécifié par les paramètres service, path, interface et name au slot slot dans l'objet receiver. Les arguments service et path peuvent être vides, ce qui indique une connexion à n'importe quel signal de la paire (interface, name), à partir de n'importe quelle application distante.

Retourne true si la connexion est réussie.

Attention : Le signal ne sera délivré au slot que si les paramètres correspondent. Cette vérification ne peut être effectuée qu'au moment de la réception du signal, et non au moment de la connexion.

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

Connecte le signal au slot slot dans l'objet receiver. Contrairement à la surcharge connect() précédente, cette fonction permet de spécifier la signature du paramètre à connecter à l'aide de la variable signature. La fonction vérifie alors que cette signature peut être délivrée à l'emplacement spécifié par slot et renvoie faux dans le cas contraire.

Renvoie true si la connexion est réussie.

Remarque : cette fonction vérifie que la signature du signal correspond aux paramètres du slot, mais elle ne vérifie pas que le signal réel existe avec la signature donnée dans le service distant.

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

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)

Connecte le signal au slot slot dans l'objet receiver. Contrairement à la surcharge connect() précédente, cette fonction permet de spécifier la signature du paramètre à connecter à l'aide de la variable signature. La fonction vérifie alors que cette signature peut être délivrée à l'emplacement spécifié par slot et renvoie un message faux dans le cas contraire.

Le paramètre argumentMatch dresse la liste des paramètres de type chaîne de caractères à faire correspondre, dans l'ordre séquentiel. Notez que, pour faire correspondre une chaîne vide, vous devez passer un QString qui est vide mais non nul (c'est-à-dire QString("")). Un QString nul ne permet pas d'établir une correspondance à cette position.

Renvoie true si la connexion a réussi.

Note : Cette fonction vérifie que la signature du signal correspond aux paramètres du slot, mais elle ne vérifie pas que le signal réel existe avec la signature donnée dans le service distant.

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

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

Ouvre une connexion de type type à l'un des bus connus et lui associe le nom de connexion name. Renvoie un objet QDBusConnection associé à cette connexion.

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

Ouvre une connexion à un bus privé à l'adresse address et lui associe le nom de connexion name. Retourne un objet QDBusConnection associé à cette connexion.

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

Ouvre une connexion d'égal à égal sur l'adresse address et lui associe le nom de connexion name. Renvoie un objet QDBusConnection associé à cette connexion.

QDBusConnection::ConnectionCapabilities QDBusConnection::connectionCapabilities() const

Renvoie les capacités de cette connexion telles qu'elles ont été négociées avec le serveur de bus ou l'homologue. Si le site QDBusConnection n'est pas connecté, cette fonction ne renvoie aucune capacité.

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

Déconnecte le signal spécifié par les paramètres service, path, interface et name du slot slot dans l'objet receiver. Les arguments doivent être les mêmes que ceux passés à la fonction connect().

Retourne true si la déconnexion a réussi.

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

Déconnecte le signal spécifié par les paramètres service, path, interface, name, et signature du slot slot dans l'objet receiver. Les arguments doivent être les mêmes que ceux passés à la fonction connect().

Renvoie true si la déconnexion a réussi.

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

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)

Déconnecte le signal spécifié par les paramètres service, path, interface, name, argumentMatch, et signature du slot slot dans l'objet receiver. Les arguments doivent être les mêmes que ceux passés à la fonction connect().

Retourne true si la déconnexion a réussi.

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

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

Ferme la connexion de bus du nom name.

Notez que si des objets QDBusConnection sont encore associés à la même connexion, la connexion ne sera pas fermée tant que toutes les références n'auront pas été supprimées. Cependant, aucune autre référence ne peut être créée à l'aide du constructeur QDBusConnection.

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

Ferme la connexion homologue du nom name.

Notez que si des objets QDBusConnection sont encore associés à la même connexion, celle-ci ne sera pas fermée tant que toutes les références n'auront pas été supprimées. Cependant, aucune autre référence ne peut être créée à l'aide du constructeur QDBusConnection.

QDBusConnectionInterface *QDBusConnection::interface() const

Renvoie un objet QDBusConnectionInterface qui représente l'interface du serveur D-Bus sur cette connexion.

bool QDBusConnection::isConnected() const

Renvoie true si cet objet QDBusConnection est connecté.

QDBusError QDBusConnection::lastError() const

Renvoie la dernière erreur survenue dans cette connexion.

Cette fonction est fournie pour le code de bas niveau. Si vous utilisez QDBusInterface::call(), les codes d'erreur sont signalés par sa valeur de retour.

Voir aussi QDBusInterface et QDBusMessage.

[static] QByteArray QDBusConnection::localMachineId()

Renvoie l'identifiant de la machine locale tel qu'il est connu par le système D-Bus. Chaque nœud ou hôte qui exécute D-Bus a un identifiant unique qui peut être utilisé pour le distinguer des autres hôtes s'ils partagent des ressources comme le système de fichiers.

Notez que la persistance de l'identifiant de la machine locale n'est pas garantie d'un démarrage à l'autre du système, de sorte que cet identifiant ne doit pas être stocké dans une mémoire persistante (comme le système de fichiers). Il est garanti qu'il reste constant uniquement pendant la durée de vie de cette session de démarrage.

QString QDBusConnection::name() const

Renvoie le nom de la connexion pour cette connexion, tel qu'indiqué dans le paramètre name de connectToBus().

Le nom de la connexion peut être utilisé pour identifier de manière unique les connexions sous-jacentes aux bus. Les copies réalisées à partir d'une seule connexion partageront toujours implicitement la connexion sous-jacente, et auront donc le même nom de connexion.

Inversement, deux connexions ayant des noms de connexion différents seront toujours connectées à des bus différents ou auront un nom unique différent (tel que renvoyé par baseService()) sur ce bus.

Voir également connectToBus() et disconnectFromBus().

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

Retourne l'objet qui a été enregistré avec registerObject() au chemin d'accès de l'objet donné par path.

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

Enregistre l'objet object au chemin path et renvoie true si l'enregistrement a réussi. Le paramètre options indique la part de l'objet object qui sera exposée via D-Bus.

Cette fonction ne remplace pas les objets existants : si un objet est déjà enregistré sur le chemin path, cette fonction renverra false. Utilisez d'abord unregisterObject() pour le désenregistrer.

L'indicateur ExportChildObjects exporte des objets enfants sur D-Bus en fonction du chemin des objets enregistrés et de QObject::objectName de l'enfant. Il est donc important que l'objet enfant ait un nom d'objet.

Vous ne pouvez pas enregistrer un objet en tant qu'objet enfant d'un objet qui a été enregistré avec ExportChildObjects.

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

Enregistre l'objet object au chemin path avec le nom d'interface interface et renvoie true si l'enregistrement a réussi. Le paramètre options indique la part de l'objet object qui sera exposée via D-Bus.

Cette fonction ne remplace pas les objets existants : s'il existe déjà un objet enregistré au chemin path, cette fonction renverra false. Utilisez d'abord unregisterObject() pour le désenregistrer.

L'indicateur ExportChildObjects exporte des objets enfants sur D-Bus en fonction du chemin des objets enregistrés et de QObject::objectName de l'enfant. Il est donc important que l'objet enfant ait un nom d'objet.

Vous ne pouvez pas enregistrer un objet en tant qu'objet enfant d'un objet qui a été enregistré avec ExportChildObjects.

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

bool QDBusConnection::registerService(const QString &serviceName)

Tente d'enregistrer le site serviceName sur le serveur D-Bus et renvoie true si l'enregistrement a réussi. L'enregistrement échoue si le nom est déjà enregistré par une autre application.

Voir aussi unregisterService() et QDBusConnectionInterface::registerService().

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

Envoie l'adresse message sur cette connexion, sans attendre de réponse. Cela convient pour les erreurs, les signaux et les valeurs de retour, ainsi que pour les appels dont les valeurs de retour ne sont pas nécessaires.

Retourne true si le message a été mis en file d'attente avec succès, false dans le cas contraire.

[static] QDBusConnection QDBusConnection::sessionBus()

Renvoie un objet QDBusConnection ouvert avec le bus de session. La référence de l'objet renvoyé par cette fonction est valable jusqu'à la fin de l'application, date à laquelle la connexion sera fermée et l'objet supprimé.

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

Remplace cette connexion par other. Cette opération est très rapide et n'échoue jamais.

[static] QDBusConnection QDBusConnection::systemBus()

Renvoie un objet QDBusConnection ouvert avec le bus système. La référence de l'objet renvoyé par cette fonction est valide jusqu'à l'exécution du destructeur de QCoreApplication, lorsque la connexion sera fermée et l'objet supprimé.

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

Désenregistre un objet qui a été enregistré avec registerObject() au chemin d'accès de l'objet donné par path et, si mode est QDBusConnection::UnregisterTree, tous ses sous-objets également.

Notez que vous ne pouvez pas désenregistrer des objets qui n'ont pas été enregistrés avec registerObject().

bool QDBusConnection::unregisterService(const QString &serviceName)

Désenregistre le service serviceName précédemment enregistré avec registerService() et renvoie true en cas de succès.

Voir aussi registerService() et QDBusConnectionInterface::unregisterService().

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

Crée une copie de la connexion other dans cet objet. Notez que la connexion référencée par cet objet avant la copie n'est pas spontanément déconnectée.

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