Die Änderungen an Qt Bluetooth

Qt 6 sind das Ergebnis des bewussten Bemühens, das Framework effizienter und benutzerfreundlicher zu gestalten.

Wir versuchen, die Binär- und Quellcodekompatibilität für alle öffentlichen APIs in jeder Version zu erhalten. Einige Änderungen waren jedoch unvermeidlich, um Qt zu einem besseren Framework zu machen.

In diesem Thema fassen wir diese Änderungen in QtBluetooth zusammen und geben Anleitungen zu deren Handhabung.

Allgemein

  • qbluetoothglobal.h wurde entfernt. qtbluetoothglobal.h ist der offizielle Header mit dem gleichen Zweck.
  • Jede Verwendung von QVector wurde durch QList ersetzt.
  • Das Win32-Backend wurde entfernt. Es wird kein funktionierendes Bluetooth-Backend geben, wenn Qt mit mingw gebaut wird.
  • Da es jetzt nur noch ein Windows-Backend gibt, wurde die Protokollierungskategorie qt.bluetooth.winrt entfernt. Die entsprechenden Log-Meldungen befinden sich jetzt in qt.bluetooth.windows.

QBluetooth Namespace

Die Enums QBluetooth::Security und QBluetooth::AttAccessConstraint wurden in scoped Enums geändert, um die Typsicherheit zu verbessern.

QBluetoothDeviceDiscoveryAgent

Die Eigenschaft QBluetoothDeviceDiscoveryAgent::inquiryType und der zugehörige setter/getter & enum wurden entfernt. Das API-Element wurde nie implementiert und/oder unterstützt.

QBluetoothDeviceInfo

  • manufacturerData() gibt ein QMultiHash statt QHash zurück. Seit Qt 6 ist QMultiHash nicht mehr von QHash abgeleitet.
  • DataCompleteness wurde ersatzlos entfernt, da die zugehörigen API-Elemente keinen Zweck mehr erfüllten
  • setServiceUuids(const QList<QBluetoothUuid>, DataCompleteness) wurde ersetzt durch setServiceUuids(const QList<QBluetoothUuid> &uuids)
  • DataCompleteness serviceUuidsCompleteness() const wurde ersatzlos entfernt.
  • QList<QBluetoothUuid> serviceUuids(DataCompleteness *completeness = nullptr) const wurde ersetzt durch QList<QBluetoothUuid> serviceUuids() const.

QBluetoothLocalDevice

Die Pairing-Agent-bezogene API wurde ersatzlos entfernt. Dazu gehören pairingConfirmation(bool), pairingDisplayPinCode(..) & pairingDisplayConfirmation(..). Außer für Android und BlueZ 4 gab es nie eine Implementierung dafür. Die Unterstützung für BlueZ 4 wurde in Qt 6 entfernt und die Android-Implementierung erforderte zumindest für Teile des Codes das nicht erreichbare BLUETOOTH_PRIVILEGED.

QLowEnergyService

Umbenannte ServiceState enum Werte:

Diese Änderung erfolgt in der Erwartung, dass die Service-Ermittlung in Zukunft ein optionaler Schritt werden könnte.

QBluetoothUuid

Die Enums ProtocolUuid, ServiceClassUuid, CharacteristicType und DescriptorType sind jetzt scoped enums. Die Verwendung von Enum-Elementen muss im Anwendercode angepasst werden.

QLowEnergyController

  • Bestehende ctors und create*() Funktionen mit entfernten QBluetoothAddress Parametern wurden entfernt. QBluetoothAddress ist nicht ausreichend, um entfernte Geräte auf Apple-Systemen anzuzeigen. Es werden UUIDs benötigt, um Geräte zu "benennen". Dies kann nur durch QBluetoothDeviceInfo erfüllt werden.
  • Die verbleibenden QLowEnergyController ctors wurden privat gemacht. Die Funktionen createPeripheral() und createCentral() sollten verwendet werden, um QLowEnergyController Instanzen zu erhalten.

QLowEnergyCharacteristic

  • Die neue Methode clientCharacteristicConfiguration() wurde eingeführt, um den Client Characteristic Configuration Descriptor bequem zu erhalten.
  • Es wurden die Konstanten CCCDDisable, CCCDEnableNotification und CCCDEnableIndication eingeführt, die die möglichen Werte für den Client Characteristic Configuration Descriptor enthalten.
  • Die Methode handle() ist nicht mehr Teil der öffentlichen Bluetooth LE Schnittstellen. Ihr Zweck als Bezeichner für Merkmale wurde ersetzt. Die QLowEnergyCharacteristic Instanzen selbst dienen als Bezeichner.

QLowEnergyDescriptor

Die Methode handle() ist nicht mehr Teil der öffentlichen Bluetooth LE Schnittstellen. Ihr Zweck als Bezeichner für Deskriptoren wurde ersetzt. Die QLowEnergyDescriptor Instanzen selbst dienen als Bezeichner.

QBluetoothTransferManager

QBluetoothTransferManager, QBluetoothTransferRequest, und QBluetoothTransferReply wurden ersatzlos entfernt.

QBluetoothSocket

QBluetoothSocket::SocketState und QBluetoothSocket::SocketError sind jetzt skalierte Enums. Die Verwendung von Enum-Elementen muss im Anwendercode angepasst werden.

QML-Schnittstelle

Die QML-Schnittstelle wurde entfernt, da die Socket-Programmierung über QML nicht ratsam ist. QDeclarativeBluetoothService, QDeclarativeBluetoothSocket, und QDeclarativeBluetoothDiscoveryModel (in QML: BluetoothService, BluetoothSocket, und BluetoothDiscoveryModel) wurden ersatzlos entfernt.

"error"-Signale

Die "error"-Signale in QBluetoothDeviceDiscoveryAgent, QBluetoothLocalDevice, QBluetoothServer, QBluetoothServiceDiscoveryAgent, QBluetoothSocket, QLowEnergyController und QLowEnergyService wurden in "errorOccurred" umbenannt, um Mehrdeutigkeiten zwischen dem "error"-Signal und dem "error"-Getter zu beseitigen.

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