Sur cette page

Qt Bluetooth

L'API Bluetooth assure la connectivité entre les appareils compatibles Bluetooth.

Actuellement, l'API est prise en charge sur les plateformes suivantes :

Fonctionnalité de l'APIAndroidiOSLinux (BlueZ 5.x)macOSWindows
Bluetooth classiquexxxx
Bluetooth LE Centralxxxxx
Périphérique Bluetooth LExxxx

Vue d'ensemble

Bluetooth est une technologie sans fil à courte portée (moins de 100 mètres). Son taux de transfert de données est de 2,1 Mbps, ce qui la rend idéale pour le transfert de données entre appareils. La connectivité Bluetooth repose sur une gestion de base des appareils, comme la recherche d'appareils, la collecte d'informations à leur sujet et l'échange de données entre eux.

Qt Bluetooth La technologie Bluetooth Low Energy prend en charge le développement de la technologie Bluetooth Low Energy pour les cas d'utilisation du rôle client/central. Pour plus de détails, voir la section Bluetooth Low Energy Overview.

Utilisation du module

L'utilisation de l'API C++ d'un module Qt nécessite l'établissement d'un lien avec la bibliothèque du module, soit directement, soit par l'intermédiaire d'autres dépendances. Plusieurs outils de construction disposent d'un support dédié à cet effet, notamment CMake et qmake.

Construction avec CMake

Utilisez la commande find_package() pour localiser le composant de module nécessaire dans le paquetage Qt6:

find_package(Qt6 REQUIRED COMPONENTS Bluetooth)
target_link_libraries(mytarget PRIVATE Qt6::Bluetooth)

Pour plus de détails, voir l'aperçu de la construction avec CMake.

Construction avec qmake

Pour configurer le module afin qu'il soit construit avec qmake, ajoutez le module comme valeur de la variable QT dans le fichier .pro du projet :

QT += bluetooth

Permissions

À partir de Qt 6.6, le module Qt Bluetooth utilise la nouvelle API QPermission pour gérer les permissions Bluetooth. Cela signifie que Qt lui-même ne demande plus ces permissions, ce qui doit être fait directement à partir de l'application cliente.

Veuillez vous référer à la page Permissions de l'application pour un exemple d'intégration de la nouvelle API QPermission dans l'application.

Construction Qt Bluetooth

Même si le module peut être construit pour toutes les plateformes Qt, il n'est pas porté sur toutes. Les plateformes non prises en charge utilisent un backend factice qui est automatiquement sélectionné lorsque la plateforme n'est pas prise en charge. Le backend fictif signale les messages d'erreur et les valeurs appropriés, ce qui vous permet de détecter au moment de l'exécution que la plate-forme actuelle n'est pas prise en charge. Le backend factice est également sélectionné sous Linux si les en-têtes de développement BlueZ ne sont pas trouvés lors de la construction ou si Qt a été construit sans le support de Qt D-Bus.

L'utilisation du backend factice est mise en évidence par un avertissement approprié lors de la construction et de l'exécution.

Spécifique à Linux

Depuis Qt 6.5, le support des périphériques Linux a deux alternatives de backend : BlueZ DBus et Bluetooth Kernel API. Le backend DBus est le backend par défaut depuis Qt 6.7.

BlueZ DBus est la pile BlueZ la plus récente et peut-être le successeur éventuel de l'ancienne API du noyau. Il est un peu plus limité en termes de fonctionnalités, mais dans le cadre d'une utilisation normale, cela ne devrait pas avoir d'importance. Un avantage notable de l'utilisation du backend DBus est que le processus utilisateur n'a plus besoin d'avoir la capacité CAP_NET_ADMIN (par exemple en s'exécutant en tant qu'utilisateur root ).

Le backend DBus nécessite BlueZ version 5.56 ou supérieure, et qu'il fournisse les API DBus nécessaires. Si ces conditions ne sont pas remplies, Qt se rabat automatiquement sur l'API du noyau Bluetooth.

L'ancien noyau peut également être sélectionné manuellement en définissant la variable d'environnement QT_BLUETOOTH_USE_KERNEL_PERIPHERAL.

Spécifique à macOS

L'API Bluetooth sur macOS nécessite un certain type de distributeur d'événements qui, dans Qt Bluetooth, entraîne une dépendance à QGuiApplication... Cependant, vous pouvez définir la variable d'environnement QT_EVENT_DISPATCHER_CORE_FOUNDATION=1 pour contourner ce problème.

Les applications qui n'utilisent pas le Bluetooth classique trouveront un sous-ensemble de QtBluetooth, car CoreBluetooth (Bluetooth LE) ne nécessite pas QApplication ou QGuiApplication.

Articles et guides

Référence

Catégories d'enregistrement

Le module QtBluetooth exporte les catégories suivantes logging categories:

Catégorie de journalisationDescription de la catégorie
qt.bluetoothActive la journalisation du chemin de code multiplateforme dans QtBluetooth
qt.bluetooth.androidActive la journalisation de l'implémentation Android
qt.bluetooth.bluezActive la journalisation de l'implémentation BLuez/Linux
qt.bluetooth.iosActive la journalisation de l'implémentation iOS
qt.bluetooth.osxActive la journalisation de l'implémentation macOS
qt.bluetooth.windowsActive la journalisation de l'implémentation Windows

Les catégories de journalisation permettent d'ajouter des avertissements et des sorties de débogage pour QtBluetooth. Des informations plus détaillées sur la journalisation sont disponibles sur QLoggingCategory. Un moyen rapide d'activer toute la journalisation de QtBluetooth est d'ajouter la ligne suivante à la fonction main():

QLoggingCategory::setFilterRules(QStringLiteral("qt.bluetooth* = true"));

Exemples

Évolution des modules

Changes to Qt Bluetooth liste les changements importants dans l'API et les fonctionnalités du module qui ont été effectués pour la série Qt 6 de Qt.

Licences et attributions

Qt Bluetooth Qt est disponible sous licence commerciale auprès de The Qt Company. En outre, il est disponible sous la licence publique générale amoindrie de GNU, version 3, ou la licence publique générale de GNU, version 2. Voir Qt Licensing pour plus de détails.

Sous Linux, Qt Bluetooth utilise un exécutable séparé, sdpscanner, pour s'intégrer à la pile de protocoles Bluetooth officielle de Linux, BlueZ. BlueZ est disponible sous la licence publique générale GNU, version 2.

BlueZ

Licence publique générale GNU v2.0 uniquement (Cela n'oblige pas le code utilisateur à être sous licence GPL. Pour plus d'informations, voir les détails).

© 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.