Qt蓝牙的更改

Qt 6是通过有意识的努力使框架更加高效和易于使用的成果。

我们试图在每次发布中保持所有公共API的二进制和源代码兼容性。但由于使Qt成为更好的框架的努力,一些更改是不可避免的。

在本主题中,我们总结了这些在QtBluetooth中的更改,并提供了处理这些更改的指南。

通用

  • 已删除qbluetoothglobal.h。qtbluetoothglobal.h是具有相同目的的官方头文件。
  • 所有的QVector使用都已替换为QList
  • 已删除Win32后端。当Qt使用mingw构建时,将没有可工作的蓝牙后端。
  • 由于现在只有一个Windows后端,已删除日志分类qt.bluetooth.winrt。相应的日志消息现在在qt.bluetooth.windows。

QBluetooth命名空间

枚举QBluetooth::SecurityQBluetooth::AttAccessConstraint已更改为范围枚举,以改进类型安全。

QBluetoothDeviceDiscoveryAgent

已删除QBluetoothDeviceDiscoveryAgent::inquiryType属性以及相关的setter/getter和枚举。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除外,从未实现过它。在Qt 6中已删除Bluez 4支持,Android的实施要求至少部分代码具有BLUETOOTH_PRIVILEGED权限不可获得。

QLowEnergyService

重命名了ServiceState枚举值

此变更是在预期未来服务发现可能成为一个可选步骤的情况下进行的。

QBluetoothUuid

枚举 协议UUID服务类UUID特性类型描述符类型 现已成为范围枚举。在使用枚举项时,需要在用户代码中进行适配。

QLowEnergyController

  • 具有远程 QBluetoothAddress 参数的现有构造函数和 create*() 函数已被移除。《a href="qbluetoothaddress.html" translate="no">QBluetoothAddress》不足以在苹果系统上指示远程设备。需要 UUID 来“命名”设备。这只能通过 QBluetoothDeviceInfo 来满足。
  • 剩余的 QLowEnergyController 构造函数已被设为私有。应该使用 createPeripheral() 和 createCentral() 函数来获取 QLowEnergyController 实例。

QLowEnergyCharacteristic

  • 引入了新的方法 clientCharacteristicConfiguration(),以便方便地获取客户端特性配置描述符。
  • 引入了常量 CCCDDisableCCCDEnableNotificationCCCDEnableIndication,它们持有客户端特性配置描述符的可能值。
  • public Bluetooth LE 接口中不再包含 handle() 方法。作为特性的标识符的作用已被替换。 QLowEnergyCharacteristic 实例自身作为标识符。

QLowEnergyDescriptor

public Bluetooth LE 接口中不再包含 handle() 方法。作为描述符标识符的作用已被替换。《a href="qlowenergydescriptor.html" translate="no">QLowEnergyDescriptor》实例自身作为标识符。

QBluetoothTransferManager

已删除 QBluetoothTransferManager、QBluetoothTransferRequest 和 QBluetoothTransferReply,未提供替代方案。

QBluetoothSocket

QBluetoothSocket::SocketStateQBluetoothSocket::SocketError 现已成为范围枚举。需要在使用枚举项时对用户代码进行适配。

QML 接口

已删除 QML 接口,因为不建议通过 QML 进行套接字编程。QDeclarativeBluetoothService、QDeclarativeBluetoothSocket 和 QDeclarativeBluetoothDiscoveryModel(在 QML 中为 BluetoothService、BluetoothSocket 和 BluetoothDiscoveryModel)已删除,未能提供替代方案。

"error" 信号

QBluetoothDeviceDiscoveryAgentQBluetoothLocalDeviceQBluetoothServerQBluetoothServiceDiscoveryAgentQBluetoothSocketQLowEnergyControllerQLowEnergyService 中的 "error" 信号已被重命名为 "errorOccurred",以消除 "error" 信号和 "error" 获取器之间的歧义。

©版权 2024 Qt公司有限公司。本文档中包含的文档贡献均为各自所有者的版权。本提供的文档根据自由软件基金会发布的GNU自由文档许可第1.3版许可。Qt及其相关标志为芬兰以及世界各国Qt公司有限公司的商标。所有其他商标均为各自所有者的财产。