Auf dieser Seite

Qt Bluetooth Übersicht

Typische Anwendungsfälle der „ Qt Bluetooth “-API sind:

  • Informationen über das lokale Bluetooth-Gerät abrufen.
  • Nach anderen Bluetooth-Geräten in Reichweite suchen und Informationen über diese abrufen.
  • Dateien mithilfe des OBEX Object Push Profile (OPP) auf entfernte Geräte übertragen
  • Verbindung zu entfernten Geräten über einen RFCOMM-Kanal mithilfe des Serial Port Profile (SPP) herstellen.
  • Erstellen Sie einen RFCOMM-Server, der eingehende Verbindungen über SPP zulässt.
  • Spezifikationen zum Bluetooth Low Energy-Gerät abrufen.
  • Stellen Sie eine Verbindung zu einem Bluetooth-Low-Energy-Gerät her.
  • Empfangen Sie eine Anzeige vom Bluetooth Low Energy-Gerät.

Beachten Sie, dass das Object Push Profile unter Android und Windows nicht unterstützt wird.

Hinweis: Teile der RFCOMM-Funktionalität können unter Windows nicht über Qt konfiguriert werden. Die Felder „ ServiceClassIds “ und „ ProtocolDescriptorList “ eines Dienstes werden automatisch ausgefüllt. Daher führt die Registrierung eines Dienstes mit benutzerdefinierten Werten für diese Felder unter Windows möglicherweise nicht zum erwarteten Ergebnis.

Hinweis: Der RSSI (Received Signal Strength Indicator) sowie die von Bluetooth-LE-Geräten übermittelten herstellerspezifischen Daten werden vom Win32-Backend nicht unterstützt. Außerdem können nur Geräte gefunden werden, die zuvor über die Windows-Einstellungen gekoppelt wurden.

In den folgenden Abschnitten wird beschrieben, wie die C++-API-Klassen von „ Qt Bluetooth “ für die oben genannten Anwendungsfälle verwendet werden.

Abrufen lokaler Geräteinformationen

Die „ Qt Bluetooth “-API hat drei Hauptzwecke. Der erste besteht darin, lokale und entfernte Geräteinformationen abzurufen. Die ersten Schritte beim Abrufen von Geräteinformationen bestehen darin, zu prüfen, ob Bluetooth auf dem Gerät verfügbar ist, und die lokale Geräteadresse sowie den Namen des Geräts auszulesen. Die Klasse „ QBluetoothLocalDevice “ stellt all diese Informationen bereit. Darüber hinaus können Sie damit Bluetooth ein- und ausschalten, die Sichtbarkeit des Geräts festlegen und die aktuellen Verbindungen ermitteln.

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();
}

Nach Bluetooth-Geräten suchen

Ähnlich wie die „ QBluetoothLocalDevice “ bietet die API die Klasse „ QBluetoothDeviceInfo “ an, die ähnliche Informationen zu entfernten Geräten bereitstellt. Sie können zwar selbst „ QBluetoothDeviceInfo “-Objekte erstellen und mit Daten füllen, einfacher ist es jedoch, die Methode „ QBluetoothDeviceDiscoveryAgent “ zu verwenden, um eine automatische Suche nach sichtbaren Bluetooth-Geräten innerhalb der Verbindungsreichweite zu starten.

void MyClass::startDeviceDiscovery()
{

    // Einen Discovery-Agent erstellen und eine Verbindung zu dessen Signalen herstellen
    QBluetoothDeviceDiscoveryAgent*discoveryAgent = new QBluetoothDeviceDiscoveryAgent(this);
    connect(discoveryAgent, SIGNAL(deviceDiscovered(QBluetoothDeviceInfo)),
            this, SLOT(deviceDiscovered(QBluetoothDeviceInfo)));

    // Eine Erkennung starten
    discoveryAgent->start();

    //...
}

// In Ihrem lokalen Slot lesen Sie Informationen über die gefundenen Geräte aus
void MyClass::deviceDiscovered(const QBluetoothDeviceInfo&device)
{
    qDebug() << "Found new device:" << device.name() << '(' << device.address().toString() << ')';
}

Datenaustausch zwischen Geräten

Der flexiblere Ansatz für die Kommunikation zwischen zwei Bluetooth-fähigen Geräten besteht darin, eine Verbindung über einen virtuellen seriellen Anschluss herzustellen und über diese Verbindung Daten frei auszutauschen. Dies kann mithilfe des Serial Port Profile (SPP) erfolgen. Das Serial Port Profile emuliert eine serielle Verbindung über das Bluetooth-Transportprotokoll RFCOMM.

Um eingehende SPP-Verbindungen empfangen zu können, müssen Sie mithilfe von ` QBluetoothServer` auf eingehende Verbindungen warten.

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;
}

Stellen Sie von einem anderen Gerät aus, das die Rolle des Clients übernimmt, eine Verbindung zu diesem Server her, indem Sie „ QBluetoothSocket “ verwenden:

void ChatClient::startClient(const QBluetoothServiceInfo&remoteService)
{
    if (socket)
        return;

    // Verbindung zum Dienst herstellen
    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);
}

Die Verwendung einer solchen Verbindung ermöglicht den Austausch beliebiger Daten in beide Richtungen. Sie eignet sich hervorragend für Spiele oder zur Synchronisierung des Zustands zwischen zwei Instanzen einer Anwendung auf zwei Geräten. Ausführlichere Beschreibungen zur Konfiguration von Server und Client finden Sie in den Abschnitten mit detaillierten Erläuterungen zu den Klassen „ QBluetoothServer “ und „ QBluetoothSocket “. Ein gutes Beispiel für den Einstieg in SPP ist das Beispiel „Bluetooth Chat “.

Bluetooth Low Energy

Bluetooth Low Energy, auch bekannt als Bluetooth Smart, ist eine neue Technologie, die es Geräten mit geringem Energieverbrauch ermöglicht, miteinander zu kommunizieren. Weitere Details zu dieser Technologie und den zugehörigen Qt-APIs finden Sie in der Übersicht zu 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.