Qt Bluetooth Vue d'ensemble
Avec l'API Qt Bluetooth, les cas d'utilisation typiques sont les suivants :
- Récupérer des informations sur l'appareil Bluetooth local.
- Rechercher d'autres appareils Bluetooth à portée et récupérer des informations à leur sujet.
- Envoyer des fichiers à des appareils distants à l'aide du profil OBEX Object Push (OPP).
- Se connecter à des appareils distants par l'intermédiaire d'un canal RFCOMM en utilisant le profil de port série (SPP).
- Créer un serveur RFCOMM qui autorise les connexions entrantes à l'aide du profil SPP.
- Récupérer les spécifications d'un dispositif Bluetooth Low Energy.
- Se connecter à un dispositif Bluetooth Low Energy.
- Recevoir une annonce d'un dispositif Bluetooth Low Energy.
Notez que le profil Object Push n'est pas pris en charge sur Android et Windows.
Remarque : certaines parties de la fonctionnalité RFCOMM ne peuvent pas être configurées par Qt sous Windows. Les champs ServiceClassIds et ProtocolDescriptorList d'un service sont remplis automatiquement. Par conséquent, l'enregistrement d'un service avec des valeurs personnalisées pour ces champs peut ne pas donner le résultat escompté sous Windows.
Remarque : l'indicateur de la force du signal reçu (RSSI), ainsi que les données spécifiques au fabricant annoncées par les appareils Bluetooth LE ne sont pas pris en charge par le backend Win32. De plus, il n'est possible de trouver que les appareils qui ont été précédemment appariés par le biais des paramètres de Windows.
Les sections suivantes décrivent comment utiliser les classes de l'API C++ de Qt Bluetooth pour les cas d'utilisation susmentionnés.
Récupération des informations sur les appareils locaux
L'API Qt Bluetooth a trois objectifs principaux. Le premier consiste à obtenir des informations sur les appareils locaux et distants. Les premières étapes de la récupération des informations sur l'appareil consistent à vérifier si Bluetooth est disponible sur l'appareil et à lire l'adresse et le nom de l'appareil local. QBluetoothLocalDevice est la classe qui fournit toutes ces informations. En outre, vous pouvez l'utiliser pour activer/désactiver le Bluetooth, définir la visibilité de l'appareil et déterminer les connexions en cours.
QBluetoothLocalDevice localDevice; QString localDeviceName; // Check if Bluetooth is available on this device if (localDevice.isValid()) { // Turn Bluetooth on localDevice.powerOn(); // Read local device name localDeviceName = localDevice.name(); // Make it visible to others localDevice.setHostMode(QBluetoothLocalDevice::HostDiscoverable); // Get connected devices QList<QBluetoothAddress> remotes; remotes = localDevice.connectedDevices(); }
Recherche de périphériques Bluetooth
À l'instar de QBluetoothLocalDevice, l'API propose QBluetoothDeviceInfo qui fournit des informations similaires sur les appareils distants. Bien que vous puissiez créer vous-même des objets QBluetoothDeviceInfo et les remplir de données, il est plus facile d'utiliser QBluetoothDeviceDiscoveryAgent pour lancer une recherche automatisée des appareils Bluetooth visibles dans la zone de connexion.
void MyClass::startDeviceDiscovery() { // Créer un agent de découverte et se connecter à ses signaux QBluetoothDeviceDiscoveryAgent *discoveryAgent = new QBluetoothDeviceDiscoveryAgent(this) ; connect(discoveryAgent, SIGNAL(deviceDiscovered(QBluetoothDeviceInfo)), this, SLOT(deviceDiscovered(QBluetoothDeviceInfo))) ; // Démarrer une découverte discoveryAgent->start() ; //...}// Dans votre slot local, lisez les informations sur les appareils trouvésvoid MyClass::deviceDiscovered(const QBluetoothDeviceInfo &device){ qDebug() << "Found new device:" << device.name() << '(' << device.address().toString() << ')'; }
Échange de données entre appareils
L'approche la plus souple pour la communication entre deux appareils compatibles Bluetooth consiste à créer une connexion de port série virtuelle et à échanger librement des données via cette connexion. Cela peut se faire grâce au profil de port série (SPP). Le profil de port série émule une connexion série sur le protocole de transport Bluetooth RFCOMM.
Pour pouvoir recevoir des connexions SPP entrantes, vous devez écouter les connexions entrantes à l'aide de QBluetoothServer.
rfcommServer = new QBluetoothServer(QBluetoothServiceInfo::RfcommProtocol, this) ; connect(rfcommServer, &QBluetoothServer::newConnection, this, QOverload<>::of(&ChatServer::clientConnected)) ;bool result = rfcommServer->listen(localAdapter) ;if (!result) { qWarning() << "Cannot bind chat server to" << localAdapter.toString(); return; }
Connectez-vous à ce serveur à partir d'un autre appareil jouant le rôle de client en utilisant un QBluetoothSocket:
void ChatClient::startClient(const QBluetoothServiceInfo &remoteService) { if (socket) return; // Se connecter au servicesocket = new QBluetoothSocket(QBluetoothServiceInfo::RfcommProtocol) ; qDebug() << "Create socket"; socket->connectToService(remoteService) ; qDebug() << "ConnectToService done"; connect(socket, &QBluetoothSocket::readyRead, this, &ChatClient::readSocket) ; connect(socket, &QBluetoothSocket::connected, this, QOverload<>::of(&ChatClient::connected)) ; connect(socket, &QBluetoothSocket::disconnected, this, &ChatClient::disconnected) ; connect(socket, &QBluetoothSocket::errorOccurred, this, &ChatClient::onSocketErrorOccurred) ; }
L'utilisation d'une telle connexion permet d'échanger toute forme de données dans les deux sens. Elle est parfaitement adaptée aux jeux ou à la synchronisation de l'état entre deux instances d'une application sur deux appareils. Pour une description plus détaillée de la configuration du serveur et du client, veuillez vous référer aux sections de description détaillée des classes QBluetoothServer et QBluetoothSocket. Un bon exemple pour débuter avec SPP est l'exemple Bluetooth Chat.
Bluetooth Low Energy
Bluetooth Low Energy, également connu sous le nom de Bluetooth Smart, est une nouvelle technologie permettant aux appareils à faible consommation d'énergie de communiquer entre eux. Vous trouverez plus de détails sur cette technologie et les API Qt associées dans l'aperçu de Bluetooth Low Energy.
© 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.