Spec-Zone.ru › Qt

Изменения в 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API