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

Présentation

Bluetooth est une technologie sans fil à courte portée (moins de 100 mètres). Son débit 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 des fonctions de gestion de base des appareils, telles que la recherche d’appareils, la collecte d’informations à leur sujet et l’échange de données entre eux.

Qt Bluetooth prend en charge le développement Bluetooth Low Energy pour les cas d’utilisation en mode client/serveur. Vous trouverez plus de détails dans la section Présentation de Bluetooth Low Energy.

Utilisation du module

L'utilisation de l'API C++ d'un module Qt nécessite une liaison avec la bibliothèque du module, soit directement, soit via d'autres dépendances. Plusieurs outils de compilation prennent cela en charge, notamment CMake et qmake.

Compilation avec CMake

Utilisez la commande « find_package() » pour localiser le composant de module requis dans le paquet « Qt6 » :

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

Pour plus de détails, consultez la présentation « Compilation avec CMake ».

Compilation avec qmake

Pour configurer le module en vue d’une compilation avec qmake, ajoutez le module en tant que valeur de la variable ` QT ` dans le fichier `.pro` du projet :

QT += bluetooth

Autorisations

À partir de Qt 6.6, le module Qt Bluetooth utilise la nouvelle API QPermission pour gérer les autorisations Bluetooth. Cela signifie que Qt ne demande plus ces autorisations lui-même ; cette opération doit donc être effectuée directement depuis l’application cliente.

Veuillez vous reporter à la page Autorisations de l’application pour obtenir un exemple d’intégration de la nouvelle API QPermission dans l’application.

Compilation Qt Bluetooth

Même si le module peut être compilé pour toutes les plateformes Qt, il n’est pas porté sur chacune d’entre elles. Les plateformes non prises en charge utilisent un backend factice qui est automatiquement sélectionné lorsque la plateforme n’est pas prise en charge. Ce backend factice renvoie des messages d’erreur et des valeurs appropriés, ce qui vous permet de détecter à l’exécution que la plateforme 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 compilation ou si Qt a été compilé sans prise en charge d’ Qt D-Bus.

L'utilisation du backend factice est signalée par un avertissement approprié lors de la compilation et de l'exécution.

Spécificités à Linux

Depuis Qt 6.5, la prise en charge des périphériques sous Linux propose deux backends alternatifs : BlueZ DBus et l’API Bluetooth du noyau. Le backend DBus est le backend par défaut depuis Qt 6.7.

BlueZ DBus est la pile BlueZ la plus récente et pourrait bien être le successeur à terme de l’ancienne API du noyau. Ses fonctionnalités sont un peu plus limitées, mais cela ne devrait pas poser de problème dans le cadre d’une utilisation classique. L’un des avantages notables de l’utilisation du backend DBus est que le processus utilisateur n’a plus besoin de disposer de la capacité CAP_NET_ADMIN (par exemple, en s’exécutant en tant qu’utilisate root ).

Le backend DBus nécessite la version 5.56 ou supérieure de BlueZ, qui doit fournir les API DBus requises. Si ces conditions ne sont pas remplies, Qt revient automatiquement au backend API du noyau Bluetooth.

Le backend du noyau, plus ancien, peut également être sélectionné manuellement en définissant la variable d’environnement QT_BLUETOOTH_USE_KERNEL_PERIPHERAL.

Spécificités à macOS

L'API Bluetooth sur macOS nécessite un certain type de répartiteur d'événements qui, dans Qt, entraîne une dépendance à l'égard de 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 disposeront d’un sous-ensemble des fonctionnalités d’ QtBluetooth, car CoreBluetooth (Bluetooth LE) ne nécessite ni QApplication ni QGuiApplication.

Articles et guides

Référence

Catégories de journalisation

Le module QtBluetooth exporte les données suivantes logging categories:

Catégorie de journalisationDescription
Qt BluetoothActive la journalisation du chemin d'exécution 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'afficher des messages d'avertissement et de débogage supplémentaires pour QtBluetooth. Vous trouverez des informations plus détaillées sur la journalisation à l'adresse QLoggingCategory. Pour activer rapidement toute la journalisation de QtBluetooth, ajoutez la ligne suivante à la fonction main():

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

Exemples

Évolution du module

La section «Modifications apportées à l'Qt Bluetooth » répertorie les modifications importantes apportées à l'API et aux fonctionnalités du module dans le cadre de la série Qt 6.

Licences et mentions de copyright

Qt Bluetooth est disponible sous licence commerciale auprès de The Qt Company. Il est également disponible sous licence GNU Lesser General Public License, version 3, ou GNU General Public License, version 2. Pour plus de détails, consultez la page Licences Qt.

Sous Linux, Qt Bluetooth utilise un exécutable distinct, 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, consultez 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.