Qt Bluetooth Présentation
Avec l'API « Qt Bluetooth », les cas d'utilisation typiques sont les suivants :
- Récupérer des informations sur le périphérique Bluetooth local.
- Rechercher d’autres périphériques Bluetooth à portée et récupérer des informations les concernant.
- Transférer des fichiers vers des périphériques distants à l’aide du profil OBEX Object Push Profile (OPP)
- Se connecter à des périphériques distants via un canal RFCOMM à l’aide du profil de port série (SPP).
- Créer un serveur RFCOMM permettant d’accepter des connexions entrantes via le profil SPP.
- Récupérer les spécifications d'un appareil Bluetooth Low Energy.
- Se connecter à un appareil Bluetooth Low Energy.
- Recevoir une annonce provenant d’un appareil Bluetooth Low Energy.
Notez que le profil Object Push n'est pas pris en charge sur Android et Windows.
Remarque : certaines fonctionnalités RFCOMM ne peuvent pas être configurées par Qt sous Windows. Les champs « ServiceClassIds » et « ProtocolDescriptorList » d’un service sont renseignés 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 puissance du signal reçu (RSSI), ainsi que les données spécifiques au fabricant diffusées par les appareils Bluetooth LE, ne sont pas pris en charge par le backend Win32. De plus, il n'est possible de détecter que les appareils ayant déjà été appairés via les Paramètres de Windows.
Les sections suivantes décrivent comment utiliser les classes de l’API C++ « Qt Bluetooth » pour les cas d’utilisation ci-dessus.
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 le périphérique consistent à vérifier si le Bluetooth est disponible sur le périphérique et à lire l’adresse et le nom du périphérique local. La classe ` QBluetoothLocalDevice ` fournit toutes ces informations. De plus, vous pouvez l’utiliser pour activer ou désactiver le Bluetooth, définir la visibilité du périphérique 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 d'appareils Bluetooth
À l’instar de l’interface QBluetoothLocalDevice, l’API propose l’interface QBluetoothDeviceInfo qui fournit des informations similaires sur les appareils distants. Bien que vous puissiez simplement créer vous-même des objets QBluetoothDeviceInfo et les remplir de données, la méthode la plus simple consiste à utiliser la méthode QBluetoothDeviceDiscoveryAgent pour lancer une recherche automatisée des appareils Bluetooth visibles situés à portée 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)));
// Lancer une découverte
discoveryAgent->start();
//...
}
// Dans votre slot local, lisez les informations concernant les appareils détectés
void MyClass::deviceDiscovered(const QBluetoothDeviceInfo&device)
{
qDebug() << "Found new device:" << device.name() << '(' << device.address().toString() << ')';
}Échange de données entre appareils
L'approche la plus flexible pour la communication entre deux appareils compatibles Bluetooth consiste à créer une connexion de port série virtuel et à échanger librement des données via cette connexion. Cela peut être réalisé grâce au profil de port série (SPP). Le profil de port série émule une connexion série via 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 depuis un autre appareil jouant le rôle de client à l'aide d'un QBluetoothSocket:
void ChatClient::startClient(const QBluetoothServiceInfo&remoteService)
{
if (socket)
return;
// Connexion au service
socket = 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 tout type 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 reporter aux sections de description détaillée des classes QBluetoothServer et QBluetoothSocket. L'exemple « Bluetooth Chat » constitue un bon point de départ pour découvrir SPP.
Bluetooth Low Energy
Le Bluetooth Low Energy, également appelé Bluetooth Smart, est une nouvelle technologie permettant à des 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 la présentation du 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.