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-Funktion | Android | iOS | Linux (BlueZ 5.x) | macOS | Windows |
|---|---|---|---|---|---|
| Klassisches Bluetooth | x | x | x | x | |
| Bluetooth LE Central | x | x | x | x | x |
| Bluetooth LE-Peripheriegerät | x | x | x | x |
Ü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 += bluetoothBerechtigungen
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 “.
Weiterführende Informationen
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:
| Protokollierungskategorie | Beschreibung |
|---|---|
| Qt Bluetooth | Aktiviert die Protokollierung des plattformübergreifenden Codepfads in QtBluetooth |
| qt.bluetooth.android | Aktiviert die Protokollierung der Android-Implementierung |
| qt.bluetooth.bluez | Aktiviert die Protokollierung der BLuez-/Linux-Implementierung |
| qt.bluetooth.ios | Aktiviert die Protokollierung der iOS -Implementierung |
| qt.bluetooth.osx | Aktiviert die Protokollierung der macOS -Implementierung |
| qt.bluetooth.windows | Aktiviert 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
- QML
- C++
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.
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.