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-MerkmalAndroidiOSLinux (BlueZ 5.x)macOSWindows
Klassisches Bluetoothxxxx
Bluetooth LE Zentralexxxxx
Bluetooth LE Peripheriegerätxxxx

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

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:

ProtokollierungskategorieBeschreibung
qt.bluetoothErmöglicht die Protokollierung des plattformübergreifenden Codepfads in QtBluetooth
qt.bluetooth.androidErmöglicht die Protokollierung der Android-Implementierung
qt.bluetooth.bluezErmöglicht die Protokollierung der BLuez/Linux-Implementierung
qt.bluetooth.iosErmöglicht die Protokollierung der iOS-Implementierung
qt.bluetooth.osxErmöglicht die Protokollierung der macOS-Implementierung
qt.bluetooth.windowsAktiviert 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

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.

BlueZ

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.