Sur cette page

QDBusConnection Class

La classe `QDBusConnection` représente une connexion au démon du bus D-Bus. En savoir plus...

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 constitue le point de départ d'une session D-Bus. Elle permet d'accéder à des objets et interfaces distants, de connecter des signaux distants aux slots de votre objet, d'enregistrer des objets, etc.

Les connexions D-Bus sont créées à l'aide de la fonction ` connectToBus()`, qui ouvre une connexion vers le démon serveur et effectue la négociation initiale, en associant cette connexion à un nom. Toute tentative ultérieure de connexion utilisant le même nom renverra cette même connexion.

La connexion est ensuite interrompue à l'aide de la fonction disconnectFromBus().

Une fois la connexion interrompue, l’appel de la fonction ` connectToBus()` ne rétablira pas la connexion ; vous devez créer une nouvelle instance de `QDBusConnection`.

Pour faciliter l’utilisation des deux types de connexion les plus courants, les fonctions ` sessionBus()` et ` systemBus()` renvoient respectivement des connexions ouvertes vers le démon du serveur de session et le démon du serveur système. Ces connexions sont ouvertes lors de leur première utilisation et fermées lorsque le destructeur de ` QCoreApplication ` est exécuté.

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 communiquer entre elles et échanger des messages. Pour ce faire, il suffit de passer une adresse à la fonction connectToBus(), qui a été ouverte par une autre application D-Bus à l’aide de QDBusServer.

Documentation sur les types de membres

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
QDBusConnection::SystemBus1le bus système, utilisé pour communiquer avec les processus à l'échelle du système
QDBusConnection::ActivationBus2le bus d’activation, « alias » du bus qui a lancé le service

Sur le bus de session, on trouve d'autres applications du même utilisateur qui partagent la même session de bureau (d'où son nom). Sur 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 fonctionnalité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 OR de valeurs ConnectionCapability.

Voir également connectionCapabilities().

enum QDBusConnection::RegisterOption
flags QDBusConnection::RegisterOptions

Spécifie les options d'enregistrement des objets auprès de la connexion. Les valeurs possibles sont les suivantes :

ConstanteValeurDescription
QDBusConnection::ExportAdaptors0x01exporter le contenu des adaptateurs présents dans cet objet
QDBusConnection::ExportScriptableSlots0x10exporter les slots 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 de ExportScriptableSlots | ExportScriptableSignals | ExportScriptableProperties
QDBusConnection::ExportNonScriptableSlots0x100exporter les slots 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 éléments appelables non scriptables de cet objet
QDBusConnection::ExportNonScriptableContents0xf00forme abrégée de ExportNonScriptableSlots | ExportNonScriptableSignals | ExportNonScriptableProperties
QDBusConnection::ExportAllSlotsExportScriptableSlots|ExportNonScriptableSlotsexporter tous les slots 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 éléments 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 OR de valeurs RegisterOption.

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

enum QDBusConnection::UnregisterMode

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

ConstanteValeurDescription
QDBusConnection::UnregisterNode0Désenregistrer uniquement ce nœud : ne pas désenregistrer les objets enfants
QDBusConnection::UnregisterTree1désenregistrer ce nœud et toute sa sous-arborescence

Notez toutefois que si cet objet a été enregistré avec l’option « ExportChildObjects », la fonction UnregisterNode désenregistrera également les objets enfants.

Documentation des fonctions membres

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

Crée un objet `QDBusConnection` associé à la connexion nommée ` name`.

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

QDBusConnection::QDBusConnection(const QDBusConnection &other)

Crée une copie de la connexion « other ».

[noexcept] QDBusConnection::~QDBusConnection()

Supprime cet objet. Cela ne ferme pas la connexion : pour cela, vous devez appeler la méthode disconnectFromBus().

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

Envoie l'message via cette connexion et revient immédiatement. Cette fonction est réservée 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 un délai de timeout millisecondes, une erreur automatique sera générée pour signaler l’expiration de l’appel. La valeur par défaut de timeout est -1 ; elle sera remplacée par une valeur définie par l’implémentation, adaptée aux communications interprocessus (généralement 25 secondes). Ce délai d’expiration correspond également à la limite supérieure d’attente dans QDBusPendingCall::waitForFinished().

Consultez la fonction ` QDBusInterface::asyncCall()` pour une méthode plus conviviale d’exécution des appels.

Remarque : les appelsde méthodes vers des 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 correspondant à cette connexion, si l'objet ` QDBusConnection ` est connecté, ou une chaîne vide ` QString ` dans le cas contraire.

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

Cette fonction renvoie un objet QString vide pour les connexions pair à pair.

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

Envoie la requête message via cette connexion et reste en attente d'une réponse pendant timeout millisecondes au maximum. Cette fonction est réservée aux appels de méthode. Elle renvoie le message de réponse comme valeur de retour, qui sera de type QDBusMessage::ReplyMessage ou QDBusMessage::ErrorMessage.

Si aucune réponse n'est reçue dans un délai de timeout millisecondes, une erreur automatique sera générée, indiquant l'expiration de l'appel. La valeur par défaut de timeout est -1 ; elle sera remplacée par une valeur définie par l'implémentation et adaptée aux communications interprocessus (généralement 25 secondes).

Consultez la fonction QDBusInterface::call() pour une manière plus conviviale d'effectuer des appels.

Avertissement : si mode est QDBus::BlockWithGui, cette fonction réintégrera la boucle d’événements Qt afin d’attendre la réponse. Pendant l’attente, elle peut transmettre des signaux et d’autres appels de méthode à votre application. Celle-ci doit donc être prête à gérer une réentrance chaque fois qu’un appel est effectué avec call().

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

Envoie l'message via cette connexion et revient immédiatement. Lorsque la réponse est reçue, la méthode returnMethod est appelée dans l'objet receiver. Si une erreur se produit, la méthode errorMethod sera appelée à la place.

Si aucune réponse n’est reçue dans un délai de timeout millisecondes, une erreur automatique sera générée, indiquant l’expiration de l’appel. La valeur par défaut de timeout est -1 ; elle sera remplacée par une valeur définie par l’implémentation et adaptée aux communications interprocessus (généralement 25 secondes).

Cette fonction est réservée aux appels de méthode. Il est garanti que le slot sera appelé exactement une fois avec la réponse, à condition que les types de paramètres correspondent et qu’aucune erreur ne se produise.

Renvoie ` 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)

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

Renvoie « true » si la connexion a abouti.

Avertissement : le signal ne sera transmis 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)

Relie le signal au slot slot de l'objet receiver. Contrairement à la surcharge précédente de la fonction connect(), cette fonction permet de spécifier la signature du paramètre à relier à l'aide de la variable signature. La fonction vérifie ensuite que cette signature peut être transmise au slot spécifié par slot et renvoie false dans le cas contraire.

Renvoie « true » si la connexion a abouti.

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 existant avec la signature donnée existe réellement 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)

Relie le signal au slot slot dans l’objet receiver. Contrairement à la surcharge précédente de la fonction connect(), cette fonction permet de spécifier la signature du paramètre à relier à l’aide de la variable signature. La fonction vérifie alors que cette signature peut être transmise au slot spécifié par slot et renvoie false dans le cas contraire.

Le paramètre argumentMatch répertorie, dans l’ordre séquentiel, les chaînes de caractères à faire correspondre. Notez que, pour faire correspondre une chaîne vide, vous devez passer un QString vide mais non nul (c’est-à-dire QString("")). Un QString nul ignore la correspondance à cette position.

Renvoie « true » si la connexion a abouti.

Remarque : cette fonction vérifie que la signature du signal correspond aux paramètres de l’emplacement, mais elle ne vérifie pas que le signal existe réellement 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 » vers l'un des bus connus et lui attribue le nom « name ». Renvoie un objet « QDBusConnection » associé à cette connexion.

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

Ouvre une connexion vers un bus privé à l'adresse address et lui attribue le nom de connexion « name ». Renvoie un objet « QDBusConnection » associé à cette connexion.

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

Ouvre une connexion peer-to-peer à l'adresse address et lui attribue 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 le pair. Si cette « QDBusConnection » n’est pas connectée, 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 de l'emplacement slot de l'objet receiver. Les arguments doivent être identiques à ceux transmis à la fonction connect().

Renvoie « 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 de l'emplacement slot de l'objet receiver. Les arguments doivent être identiques à ceux transmis à 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 de l'emplacement slot de l'objet receiver. Les arguments doivent être identiques à ceux transmis à la fonction connect().

Renvoie « 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 au bus nommée « name ».

Notez que s'il reste des objets QDBusConnection associés à cette 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 nouvelle référence ne peut être créée à l'aide du constructeur QDBusConnection.

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

Ferme la connexion entre pairs portant le nom « name ».

Notez que s’il existe encore des objets QDBusConnection associés à cette 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 nouvelle 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 sur cette connexion.

Cette fonction est destinée au code de bas niveau. Si vous utilisez la fonction ` QDBusInterface::call()`, les codes d'erreur sont indiqués par sa valeur de retour.

Voir également QDBusInterface et QDBusMessage.

[static] QByteArray QDBusConnection::localMachineId()

Renvoie l'identifiant local de la machine tel qu'il est connu du système D-Bus. Chaque nœud ou hôte exécutant D-Bus dispose d'un identifiant unique permettant de le distinguer des autres hôtes lorsqu'ils partagent des ressources telles que le système de fichiers.

Notez que la persistance de l'identifiant de la machine locale n'est pas garantie d'un redémarrage à l'autre ; cet identifiant ne doit donc pas être stocké dans un support de stockage persistant (comme le système de fichiers). Sa constance n'est garantie que pendant la durée de cette session de démarrage.

QString QDBusConnection::name() const

Renvoie le nom de cette connexion, tel qu'il a été fourni en tant que paramètre « name » à la fonction connectToBus().

Le nom de connexion permet d’identifier de manière unique les connexions sous-jacentes réelles aux bus. Les copies créées à partir d’une même connexion partageront toujours implicitement la connexion sous-jacente et porteront donc le même nom de connexion.

À l'inverse, deux connexions ayant des noms différents seront toujours soit connectées à des bus différents, soit dotées d’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

Renvoie l'objet qui a été enregistré à l'aide de la fonction ` registerObject()` à l'emplacement indiqué par ` path`.

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

Enregistre l'objet object sous le chemin path et renvoie true si l'enregistrement a réussi. Le paramètre options spécifie la partie 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é à l’emplacement path, cette fonction renverra false. Utilisez unregisterObject() pour le désenregistrer au préalable.

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

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

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

Enregistre l'objet object sous le chemin path avec le nom d'interface interface et renvoie true si l'enregistrement a réussi. Le paramètre options spécifie la partie 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 unregisterObject() pour le désenregistrer au préalable.

L'indicateur ` ExportChildObjects ` exporte les objets enfants sur D-Bus en fonction du chemin d'accès des objets enregistrés et de la propriété ` QObject::objectName ` de l'enfant. Il est donc important que l'objet enfant dispose d'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 l’ serviceName sur le serveur D-Bus et renvoie true si l’enregistrement a réussi. L’enregistrement échouera si le nom est déjà enregistré par une autre application.

Voir également unregisterService() et QDBusConnectionInterface::registerService().

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

Envoie l’ message via cette connexion, sans attendre de réponse. Cette méthode convient aux erreurs, aux signaux et aux valeurs de retour, ainsi qu’aux appels dont les valeurs de retour ne sont pas nécessaires.

Renvoie ` 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 via le bus de session. La référence à l'objet renvoyée par cette fonction reste valide jusqu'à la fermeture de l'application ; à ce moment-là, 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 ne pose jamais de problème.

[static] QDBusConnection QDBusConnection::systemBus()

Renvoie un objet ` QDBusConnection ` ouvert via le bus système. La référence à l’objet renvoyée par cette fonction reste valide jusqu’à l’exécution du destructeur de ` QCoreApplication` ; à ce moment-là, la connexion sera fermée et l’objet supprimé.

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

Désenregistre un objet qui avait été enregistré via la fonction ` registerObject()` à l’emplacement indiqué par ` path ` et, si ` mode ` est défini sur ` QDBusConnection::UnregisterTree`, tous ses sous-objets également.

Notez qu’il n’est pas possible de désenregistrer des objets qui n’ont pas été enregistrés via la fonction registerObject().

bool QDBusConnection::unregisterService(const QString &serviceName)

Désenregistre le service serviceName qui avait été préalablement enregistré via registerService() et renvoie true en cas de réussite.

Voir également 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 à laquelle cet objet faisait référence avant la copie n'est pas automatiquement déconnectée.

Voir également 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.