Qt Bluetooth
Die Bluetooth-API ermöglicht die Verbindung zwischen Bluetooth-fähigen Geräten.
Derzeit wird die API von den folgenden Plattformen unterstützt:
API-Merkmal | Android | iOS | Linux (BlueZ 5.x) | macOS | Windows |
---|---|---|---|---|---|
Klassisches Bluetooth | x | x | x | x | |
Bluetooth LE Zentrale | x | x | x | x | x |
Bluetooth LE Peripheriegerät | x | x | x | x |
Überblick
Bluetooth ist eine drahtlose Technologie mit kurzer Reichweite (weniger als 100 Meter). Mit einer Datenübertragungsrate von 2,1 Mbit/s ist sie ideal für die Übertragung von Daten zwischen Geräten. Bluetooth-Konnektivität basiert auf einem grundlegenden Gerätemanagement, wie dem Scannen nach Geräten, dem Sammeln von Informationen über sie und dem Austausch von Daten zwischen ihnen.
Qt Bluetooth unterstützt die Bluetooth-Low-Energy-Entwicklung für Anwendungsfälle mit Client-/Zentralfunktion. Weitere Details finden Sie im Abschnitt Bluetooth Low Energy Übersicht.
Verwendung des Moduls
Die Verwendung der C++-API eines Qt-Moduls erfordert eine 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.
Bauen 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 Einzelheiten finden Sie in der Übersicht Bauen mit CMake.
Bauen mit qmake
Um das Modul für die Erstellung mit qmake zu konfigurieren, fügen Sie das Modul als Wert der Variable QT
in der .pro-Datei des Projekts hinzu:
QT += bluetooth
Permissions
Ab Qt 6.6 verwendet das Qt Bluetooth Modul die neue QPermission API, um Bluetooth Berechtigungen zu handhaben. Das bedeutet, dass Qt selbst nicht mehr nach diesen Berechtigungen fragt, so dass dies direkt von der Client-Anwendung aus geschehen muss.
Auf der Seite Anwendungsberechtigungen finden Sie ein Beispiel für die Integration der neuen QPermission API in die Anwendung.
Verwandte Informationen
Erstellung von Qt Bluetooth
Obwohl das Modul für alle Qt-Plattformen erstellt werden kann, wird 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 meldet entsprechende Fehlermeldungen und Werte, so dass Sie zur Laufzeit erkennen können, dass die aktuelle Plattform nicht unterstützt wird. Das Dummy-Backend wird auch unter Linux ausgewählt, wenn die BlueZ-Entwicklungsheader während der Build-Zeit nicht gefunden werden oder Qt ohne Qt D-Bus -Unterstützung gebaut wurde.
Die Verwendung des Dummy-Backends wird während des Builds und der Ausführung durch eine entsprechende Warnung hervorgehoben.
Linux spezifisch
Seit Qt 6.5 hat die Linux-Peripherie-Unterstützung zwei Backend-Alternativen: BlueZ DBus und Bluetooth Kernel API. Das DBus-Backend ist das Standard-Backend seit Qt 6.7.
BlueZ DBus ist der neuere BlueZ-Stack und möglicherweise der Nachfolger der älteren Kernel-API. Es ist ein wenig eingeschränkter in Bezug auf die Funktionen, aber in einer typischen Anwendung sollte dies keine Rolle spielen. Ein bemerkenswerter Vorteil der Verwendung des DBus-Backends ist, dass der Benutzerprozess nicht mehr die CAP_NET_ADMIN-Fähigkeit haben muss (z. B. indem er als root
user läuft).
Das DBus-Backend erfordert BlueZ Version 5.56 oder höher und stellt die benötigten DBus-APIs bereit. Wenn diese Voraussetzungen nicht erfüllt sind, 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 Event-Dispatcher, der in Qt eine Abhängigkeit zu QGuiApplication verursacht. Sie können jedoch die Umgebungsvariable QT_EVENT_DISPATCHER_CORE_FOUNDATION=1
setzen, um dieses Problem zu umgehen.
Für Anwendungen, die kein klassisches Bluetooth verwenden, steht eine Untermenge von QtBluetooth zur Verfügung, da CoreBluetooth (Bluetooth LE) weder QApplication noch QGuiApplication benötigt.
Artikel und Leitfäden
Referenz
Protokollierungskategorien
Das Modul QtBluetooth exportiert die folgenden logging categories:
Protokollierungskategorie | Beschreibung |
---|---|
qt.bluetooth | Ermöglicht die Protokollierung des plattformübergreifenden Codepfads in QtBluetooth |
qt.bluetooth.android | Ermöglicht die Protokollierung der Android-Implementierung |
qt.bluetooth.bluez | Ermöglicht die Protokollierung der BLuez/Linux-Implementierung |
qt.bluetooth.ios | Ermöglicht die Protokollierung der iOS-Implementierung |
qt.bluetooth.osx | Ermöglicht die Protokollierung der macOS-Implementierung |
qt.bluetooth.windows | Aktiviert die Protokollierung der Windows-Implementierung |
Die 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 QtBluetooth Protokollierung zu aktivieren, besteht darin, die folgende Zeile zur Funktion main()
hinzuzufügen:
QLoggingCategory::setFilterRules(QStringLiteral("qt.bluetooth* = true"));
Beispiele
- QML
- C++
Modul-Entwicklung
Änderungen an Qt Bluetooth listet wichtige Änderungen an der Modul-API und -Funktionalität auf, die für die Qt 6-Serie von Qt vorgenommen wurden.
Lizenzen und Namensnennung
Qt Bluetooth ist unter kommerziellen Lizenzen von The Qt Company erhältlich. Darüber hinaus ist es unter der GNU Lesser General Public License, Version 3, oder der GNU General Public License, Version 2, erhältlich. Siehe Qt-Lizenzierung für weitere Details.
Unter Linux verwendet Qt Bluetooth eine separate ausführbare Datei, sdpscanner
, zur Integration mit dem offiziellen Linux-Bluetooth-Protokollstapel BlueZ. BlueZ ist unter der GNU General Public License, Version 2, verfügbar.
Nur GNU General Public License v2.0 (Dies erzwingt nicht, dass der Code des Anwenders unter der GPL steht; weitere Informationen finden Sie unter Details). |
© 2025 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.