Изменения в Qt Bluetooth
Qt 6 является результатом осознанных усилий по повышению эффективности и удобства использования фреймворка.
Мы стараемся поддерживать бинарную и исходную совместимость для всех публичных API в каждом релизе. Однако некоторые изменения были неизбежны в стремлении сделать Qt лучшим фреймворком.
В этой теме мы обобщаем эти изменения в QtBluetooth и предоставляем руководство по их обработке.
Общие изменения
- Файл заголовков qbluetoothglobal.h был удален. qtbluetoothglobal.h является официальным файлом заголовков с той же целью.
- Все случаи использования QVector были заменены на QList.
- Win32 бэкенд был удален. Не будет работающего Bluetooth бэкенда, когда Qt скомпилирован с mingw.
- Поскольку теперь есть только один бэкенд для Windows, категория логирования qt.bluetooth.winrt была удалена. Соответствующие сообщения в журнале теперь находятся в qt.bluetooth.windows.
Пространство имен QBluetooth
Перечисления QBluetooth::Security и QBluetooth::AttAccessConstraint были изменены на перечисления со scope для повышения безопасности типов.
QBluetoothDeviceDiscoveryAgent
Свойство QBluetoothDeviceDiscoveryAgent::inquiryType и связанные с ним методы установки/получения и перечисление были удалены. Элемент API никогда не был реализован и/или поддерживался.
QBluetoothDeviceInfo
- manufacturerData() возвращает QMultiHash вместо QHash. Начиная с Qt 6, QMultiHash больше не является производным от QHash.
- DataCompleteness был удален без замены, так как связанные с ним элементы API больше не выполняли свою функцию
- setServiceUuids(const QList<QBluetoothUuid>, DataCompleteness) был заменен на setServiceUuids(const QList<QBluetoothUuid> &uuids)
- DataCompleteness serviceUuidsCompleteness() const был удален без замены.
- QList<QBluetoothUuid> serviceUuids(DataCompleteness *completeness = nullptr) const был заменен на QList<QBluetoothUuid> serviceUuids() const.
QBluetoothLocalDevice
API, связанные с агентом сопряжения, были удалены без замены. Это включает pairingConfirmation(bool), pairingDisplayPinCode(..) и pairingDisplayConfirmation(..). За исключением Android и BlueZ 4, он никогда не реализовывался. Поддержка Bluez 4 была удалена в Qt 6, а реализация Android требовала недоступных прав BLUETOOTH_PRIVILEGED для некоторых частей кода.
QLowEnergyService
Изменены значения перечисления ServiceState:
- DiscoveryRequired становится RemoteService
- DiscoveringService становится RemoteServiceDiscovering
- ServiceDiscovered становится RemoteServiceDiscovered
Это изменение происходит в предвидении того, что обнаружение сервисов может стать необязательным шагом в будущем.
QBluetoothUuid
Перечисления ProtocolUuid, ServiceClassUuid, CharacteristicType и DescriptorType теперь являются перечислениями со scope. Пользовательский код должен быть адаптирован к использованию элементов перечисления.
QLowEnergyController
- Существующие конструкторы и функции create*() с параметрами удаленных QBluetoothAddress были удалены. QBluetoothAddress недостаточно для указания удаленных устройств на системах Apple. Требуются UUID для "наименования" устройств. Это может быть удовлетворено только с помощью QBluetoothDeviceInfo.
- Остальные конструкторы QLowEnergyController были сделаны приватными. Для получения экземпляров QLowEnergyController следует использовать функции createPeripheral() и createCentral().
QLowEnergyCharacteristic
- Для удобного получения описателя Client Characteristic Configuration Descriptor была добавлена новая функция clientCharacteristicConfiguration().
- Были добавлены константы CCCDDisable, CCCDEnableNotification и CCCDEnableIndication, содержащие возможные значения описателя Client Characteristic Configuration Descriptor.
- Метод handle() больше не является частью публичных интерфейсов Bluetooth LE. Его цель, как идентификатора характеристик, была заменена. Сами экземпляры QLowEnergyCharacteristic служат в качестве идентификатора.
QLowEnergyDescriptor
Метод handle() больше не является частью публичных интерфейсов Bluetooth LE. Его цель, как идентификатора описателей, была заменена. Сами экземпляры QLowEnergyDescriptor служат в качестве идентификатора.
QBluetoothTransferManager
QBluetoothTransferManager, QBluetoothTransferRequest и QBluetoothTransferReply были удалены без замены.
QBluetoothSocket
QBluetoothSocket::SocketState и QBluetoothSocket::SocketError теперь являются перечислениями со scope. Пользовательский код должен быть адаптирован к использованию элементов перечисления.
Интерфейс QML
Интерфейс QML был удален, так как программирование сокетов через QML не рекомендуется. QDeclarativeBluetoothService, QDeclarativeBluetoothSocket и QDeclarativeBluetoothDiscoveryModel (в QML: BluetoothService, BluetoothSocket и BluetoothDiscoveryModel) были удалены без замены.
"error" сигналы
Сигналы "error" в QBluetoothDeviceDiscoveryAgent, QBluetoothLocalDevice, QBluetoothServer, QBluetoothServiceDiscoveryAgent, QBluetoothSocket, QLowEnergyController и QLowEnergyService были переименованы в "errorOccurred" для устранения неоднозначности между сигналом "error" и методом-геттером "error".
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qtbluetooth-changes-qt6.html