Auf dieser Seite

Qt Bluetooth

Die Bluetooth-API ermöglicht die Verbindung zwischen Bluetooth-fähigen Geräten.

Derzeit wird die API auf den folgenden Plattformen unterstützt:

API-FunktionAndroidiOSLinux (BlueZ 5.x)macOSWindows
Klassisches Bluetoothxxxx
Bluetooth LE Centralxxxxx
Bluetooth LE-Peripheriegerätxxxx

Übersicht

Bluetooth ist eine drahtlose Technologie mit kurzer Reichweite (weniger als 100 Meter). Sie bietet eine Datenübertragungsrate von 2,1 Mbit/s und eignet sich daher ideal für die Datenübertragung zwischen Geräten. Die Bluetooth-Konnektivität basiert auf grundlegenden Funktionen der Geräteverwaltung, wie dem Scannen nach Geräten, dem Abrufen von Informationen über diese sowie dem Datenaustausch zwischen ihnen.

Qt Bluetooth unterstützt die Entwicklung mit Bluetooth Low Energy für Anwendungsfälle mit Client- und Server-Rollen. Weitere Details finden Sie im Abschnitt „Bluetooth Low Energy – Überblick “.

Verwendung des Moduls

Die Verwendung der C++-API eines Qt-Moduls erfordert die Verknüpfung mit der Modulbibliothek, entweder direkt oder über andere Abhängigkeiten. Mehrere Build-Tools bieten hierfür spezielle Unterstützung, darunter CMake und qmake.

Erstellen mit CMake

Verwenden Sie den Befehl „ find_package() “, um die benötigte Modulkomponente im Paket „ Qt6 “ zu finden:

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

Weitere Details finden Sie in der Übersicht „Erstellen mit CMake “.

Erstellen mit qmake

Um das Modul für die Erstellung mit qmake zu konfigurieren, fügen Sie das Modul als Wert der Variablen „ QT “ in der .pro-Datei des Projekts hinzu:

QT += bluetooth

Berechtigungen

Ab Qt 6.6 verwendet das Modul „ Qt Bluetooth “ die neue „ QPermission “-API zur Verwaltung der Berechtigungen für „ Bluetooth “. Das bedeutet, dass Qt selbst diese Berechtigungen nicht mehr abfragt; dies muss daher direkt von der Client-Anwendung aus erfolgen.

Ein Beispiel für die Integration der neuen „ QPermission “-API in die Anwendung finden Sie auf der Seite „Anwendungsberechtigungen “.

Erstellung Qt Bluetooth

Obwohl das Modul für alle Qt-Plattformen kompiliert werden kann, ist es nicht auf alle Plattformen portiert. Nicht unterstützte Plattformen verwenden ein Dummy-Backend, das automatisch ausgewählt wird, wenn die Plattform nicht unterstützt wird. Das Dummy-Backend gibt entsprechende Fehlermeldungen und Werte aus, wodurch Sie zur Laufzeit erkennen können, dass die aktuelle Plattform nicht unterstützt wird. Das Dummy-Backend wird unter Linux ebenfalls ausgewählt, wenn während der Kompilierung keine BlueZ-Entwicklungs-Header gefunden werden oder Qt ohne „ Qt D-Bus “-Unterstützung kompiliert wurde.

Die Verwendung des Dummy-Backends wird beim Erstellen und Ausführen durch eine entsprechende Warnung hervorgehoben.

Linux-spezifisch

Seit Qt 6.5 gibt es bei der Linux-Peripherieunterstützung zwei Backend-Alternativen: BlueZ-DBus und die Bluetooth-Kernel-API. Das DBus-Backend ist seit Qt 6.7 das Standard-Backend.

BlueZ-DBus ist der neuere BlueZ-Stack und möglicherweise der zukünftige Nachfolger der älteren Kernel-API. Es ist hinsichtlich der Funktionen etwas eingeschränkter, was jedoch bei typischer Nutzung keine Rolle spielen sollte. Ein nennenswerter Vorteil der Verwendung des DBus-Backends besteht darin, dass der Benutzerprozess nicht mehr über die Fähigkeit CAP_NET_ADMIN verfügen muss (beispielsweise bei Ausführung als „ root “-Benutzer).

Das DBus-Backend erfordert BlueZ-Version 5.56 oder höher und dass diese die benötigten DBus-APIs bereitstellt. Sind diese Voraussetzungen nicht erfüllt, greift Qt automatisch auf das Bluetooth-Kernel-API-Backend zurück.

Das ältere Kernel-Backend kann auch manuell ausgewählt werden, indem die Umgebungsvariable ` QT_BLUETOOTH_USE_KERNEL_PERIPHERAL ` gesetzt wird.

macOS-spezifisch

Die Bluetooth-API unter macOS erfordert einen bestimmten Typ von Ereignis-Dispatcher, der in Qt eine Abhängigkeit von „ QGuiApplication “ verursacht. Sie können dieses Problem jedoch umgehen, indem Sie die Umgebungsvariable „ QT_EVENT_DISPATCHER_CORE_FOUNDATION=1 “ setzen.

Anwendungen, die kein Classic Bluetooth verwenden, können auf einen Teilumfang von ` QtBluetooth ` zugreifen, da CoreBluetooth (Bluetooth LE) weder ` QApplication ` noch ` QGuiApplication` benötigt.

Artikel und Anleitungen

Referenz

Protokollierungskategorien

Das Modul „ QtBluetooth “ exportiert die folgenden Protokollkategorien logging categories:

ProtokollierungskategorieBeschreibung
Qt BluetoothAktiviert die Protokollierung des plattformübergreifenden Codepfads in QtBluetooth
qt.bluetooth.androidAktiviert die Protokollierung der Android-Implementierung
qt.bluetooth.bluezAktiviert die Protokollierung der BLuez-/Linux-Implementierung
qt.bluetooth.iosAktiviert die Protokollierung der iOS -Implementierung
qt.bluetooth.osxAktiviert die Protokollierung der macOS -Implementierung
qt.bluetooth.windowsAktiviert die Protokollierung der Windows- Implementierung

Protokollierungskategorien ermöglichen zusätzliche Warn- und Debug-Ausgaben für QtBluetooth. Ausführlichere Informationen zur Protokollierung finden Sie unter QLoggingCategory. Eine schnelle Möglichkeit, die gesamte Protokollierung von QtBluetooth zu aktivieren, besteht darin, die folgende Zeile zur Funktion ` main() ` hinzuzufügen:

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

Beispiele

Modul-Weiterentwicklung

Unter „ Qt Bluetooth “ sind wichtige Änderungen an der Modul-API und der Funktionalität aufgeführt, die für die Qt-6-Serie von Qt vorgenommen wurden.

Lizenzen und Namensnennungen

Qt Bluetooth ist unter kommerziellen Lizenzen von The Qt Company erhältlich. Darüber hinaus steht es unter der GNU Lesser General Public License, Version 3, oder der GNU General Public License, Version 2, zur Verfügung. Weitere Einzelheiten finden Sie unter Qt-Lizenzierung.

Unter Linux nutzt „ Qt Bluetooth “ eine separate ausführbare Datei, „ sdpscanner “, um sich in den offiziellen Linux-Bluetooth-Protokollstack BlueZ zu integrieren. BlueZ steht unter der GNU General Public License, Version 2, zur Verfügung.

BlueZ

Nur GNU General Public License v2.0 (Dies zwingt nicht dazu, dass der Benutzercode unter der GPL stehen muss. Weitere Informationen finden Sie in den Details.)

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