QBluetoothLocalDevice Class
QBluetoothLocalDevice 类可用于访问本地蓝牙设备。更多内容...
| 头文件: | #include <QBluetoothLocalDevice> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Bluetooth) target_link_libraries(mytarget PRIVATE Qt6::Bluetooth) |
| qmake: | QT += bluetooth |
| 继承自: | QObject |
公共类型
| enum | Error { NoError, PairingError, MissingPermissionsError, UnknownError } |
| enum | HostMode { HostPoweredOff, HostConnectable, HostDiscoverable, HostDiscoverableLimitedInquiry } |
| enum | Pairing { Unpaired, Paired, AuthorizedPaired } |
公共函数
| QBluetoothLocalDevice(QObject *parent = nullptr) | |
| QBluetoothLocalDevice(const QBluetoothAddress &address, QObject *parent = 0) | |
| virtual | ~QBluetoothLocalDevice() |
| QBluetoothAddress | address() const |
| QList<QBluetoothAddress> | connectedDevices() const |
| QBluetoothLocalDevice::HostMode | hostMode() const |
| bool | isValid() const |
| QString | name() const |
| QBluetoothLocalDevice::Pairing | pairingStatus(const QBluetoothAddress &address) const |
| void | powerOn() |
| void | requestPairing(const QBluetoothAddress &address, QBluetoothLocalDevice::Pairing pairing) |
| void | setHostMode(QBluetoothLocalDevice::HostMode mode) |
信号
| void | deviceConnected(const QBluetoothAddress &address) |
| void | deviceDisconnected(const QBluetoothAddress &address) |
(since 6.2) void | errorOccurred(QBluetoothLocalDevice::Error error) |
| void | hostModeStateChanged(QBluetoothLocalDevice::HostMode state) |
| void | pairingFinished(const QBluetoothAddress &address, QBluetoothLocalDevice::Pairing pairing) |
静态公共成员
| QList<QBluetoothHostInfo> | allDevices() |
成员类型文档
enum QBluetoothLocalDevice::Error
此枚举描述了可能返回的错误
| 常量 | 值 | 描述 |
|---|---|---|
QBluetoothLocalDevice::NoError | 0 | 无已知错误 |
QBluetoothLocalDevice::PairingError | 1 | 配对出错 |
QBluetoothLocalDevice::MissingPermissionsError (since Qt 6.4) | 2 | 操作系统请求了用户未授予的权限。 |
QBluetoothLocalDevice::UnknownError | 100 | 未知错误 |
enum QBluetoothLocalDevice::HostMode
该枚举描述了本地蓝牙设备的大部分情况。
| 常量 | 值 | 描述 |
|---|---|---|
QBluetoothLocalDevice::HostPoweredOff | 0 | 关闭设备电源 |
QBluetoothLocalDevice::HostConnectable | 1 | 如果远程蓝牙设备此前已与本地蓝牙设备配对,或以其他方式知晓其地址,则可连接到该设备。如果设备处于关机状态,此操作将使其开机。 |
QBluetoothLocalDevice::HostDiscoverable | 2 | 远程蓝牙设备可以发现本地蓝牙设备的存在。此时设备处于可连接状态,且已通电。在 Android 系统中,此模式最多只能保持激活状态 5 分钟。 |
QBluetoothLocalDevice::HostDiscoverableLimitedInquiry | 3 | 远程蓝牙设备在执行“有限查询”时可检测到本地蓝牙设备的存在。此功能应用于仅在有限时间内处于可被发现状态的服务定位。这可加快游戏设备之间的发现速度,因为对于未处于“有限查询”模式的设备,可跳过服务发现步骤。 在此模式下,设备将处于可连接状态,并在需要时保持通电。Android 系统不支持此模式。 注意:在 macOS上 ,无法设置 `hostMode()`。报告的主机模式仅限于 `HostPoweredOff` 和 `HostConnectable`。 注意:在 Windows上 ,无法将hostMode() 设置为 HostDiscoverable 或 HostDiscoverableLimitedInquiry。使用这些模式的效果等同于 HostConnectable。 注意: 从 Android 13(API 级别 33)开始, HostPoweredOff 状态依赖于非公开的 Android API,因为公开的 API 已被废弃,详见 (disable())。此情况在未来的 Android 版本中可能会发生变化。 注意:至少在 Android 12 中,设备的蓝牙可见性设置可能会影响设置 HostDiscoverable 或 HostConnectable 的结果。例如,如果可见性设置为关闭,可能无法进入 HostDiscoverable 模式,而是会改用 HostConnectable 模式。此行为在未来的 Android 版本中可能会发生变化。 |
enum QBluetoothLocalDevice::Pairing
此枚举描述了两个蓝牙设备之间的配对状态。
| 常量 | 值 | 描述 |
|---|---|---|
QBluetoothLocalDevice::Unpaired | 0 | 蓝牙设备未配对。 |
QBluetoothLocalDevice::Paired | 1 | 蓝牙设备已配对。当远程设备发起与本地设备的连接时,系统将提示用户进行授权。 |
QBluetoothLocalDevice::AuthorizedPaired | 2 | 蓝牙设备已配对。当远程设备发起与本地设备的连接时,系统不会提示用户进行授权。 |
成员函数文档
[explicit] QBluetoothLocalDevice::QBluetoothLocalDevice(QObject *parent = nullptr)
使用parent 实例化一个QBluetoothLocalDevice。
注意: 从 Android 12(API 级别 31)开始 ,创建此类需要蓝牙运行时权限(BLUETOOTH_SCAN和BLUETOOTH_CONNECT)。如果未授予这些权限,该设备将无效。
另请参阅 isValid()。
[explicit] QBluetoothLocalDevice::QBluetoothLocalDevice(const QBluetoothAddress &address, QObject *parent = 0)
为address 构建新的QBluetoothLocalDevice。如果address 采用默认构造,则生成的本地设备将选择本地默认设备。
注意: 从 Android 12(API 级别 31)开始, 构造此类需要蓝牙运行时权限(BLUETOOTH_SCAN和BLUETOOTH_CONNECT)。如果未授予这些权限,该设备将无效。
另请参阅 isValid()。
[virtual noexcept] QBluetoothLocalDevice::~QBluetoothLocalDevice()
QBluetoothAddress QBluetoothLocalDevice::address() const
返回此蓝牙设备的 MAC 地址。
注意:在 Android系统中 ,自 Android 6.0 起,此函数始终返回常量值02:00:00:00:00:00 作为本地地址。程序化访问设备本地 MAC 地址的功能已被移除。
[static] QList<QBluetoothHostInfo> QBluetoothLocalDevice::allDevices()
返回所有可用本地蓝牙设备的列表。在 macOS 上,只有“默认”本地设备。
QList<QBluetoothAddress> QBluetoothLocalDevice::connectedDevices() const
返回已连接设备的列表。该列表与当前已配对设备的列表不同。
在 Android 和 macOS 系统上,无法直接获取已连接设备的列表,只能监听连接状态的变化。为方便起见,该类自实例化以来会持续监听所有连接和断开事件,并在调用此函数时返回当前列表。因此,在创建实例后不久,此函数可能会返回一个空列表。
另请参阅 deviceConnected() 和deviceDisconnected()。
[signal] void QBluetoothLocalDevice::deviceConnected(const QBluetoothAddress &address)
当本地设备通过address 与远程设备建立连接时,会发出此信号。
另请参阅 deviceDisconnected() 和connectedDevices()。
[signal] void QBluetoothLocalDevice::deviceDisconnected(const QBluetoothAddress &address)
当本地设备通过address 与远程蓝牙设备断开连接时,会发出此信号。
另请参阅 deviceConnected() 和connectedDevices()。
[signal, since 6.2] void QBluetoothLocalDevice::errorOccurred(QBluetoothLocalDevice::Error error)
如果在配对过程中发生异常的error ,则发出该信号。
该功能自 Qt 6.2 起引入。
QBluetoothLocalDevice::HostMode QBluetoothLocalDevice::hostMode() const
返回此本地蓝牙设备的当前主机模式。在 macOS 上,其值为HostPoweredOff 或HostConnectable 。
另请参阅 setHostMode()。
[signal] void QBluetoothLocalDevice::hostModeStateChanged(QBluetoothLocalDevice::HostMode state)
该主机的state 已迁移至另一个地址:HostMode 。
bool QBluetoothLocalDevice::isValid() const
如果QBluetoothLocalDevice 表示一个可用的本地蓝牙设备,则返回true ;否则返回false。
如果由本类实例表示的本地蓝牙适配器从系统中移除(例如移除底层蓝牙适配器),则该实例将失效。即使同一蓝牙适配器重新连接到系统,已失效的QBluetoothLocalDevice 实例仍保持失效状态。
注意: 从 Android 12(API 级别 31)开始 ,构造本类需要蓝牙运行时权限(BLUETOOTH_SCAN和BLUETOOTH_CONNECT)。如果未授予这些权限,该设备将无效。
另请参阅 allDevices()。
QString QBluetoothLocalDevice::name() const
返回用户为该蓝牙设备指定的名称。
[signal] void QBluetoothLocalDevice::pairingFinished(const QBluetoothAddress &address, QBluetoothLocalDevice::Pairing pairing)
已通过address 完成配对或解除配对。当前配对状态可在pairing 中查看。如果配对请求未成功,则不会发出此信号。如果配对请求失败,则会发出errorOccurred()信号。该信号仅在针对当前对象实例通过调用requestPairing()方法此前已发起的配对请求时才会发出。
QBluetoothLocalDevice::Pairing QBluetoothLocalDevice::pairingStatus(const QBluetoothAddress &address) const
返回address 的当前蓝牙配对状态,包括未配对、已配对或已配对且已授权。
void QBluetoothLocalDevice::powerOn()
如果设备处于关机状态,则在将其恢复至hostMode()状态后为其开机。
注意:由于受 支持平台的安全策略各不相同,此方法在不同平台上的行为可能有所差异。例如,系统在开启或关闭蓝牙前可能会要求用户确认。在 macOS 上无法开启或关闭蓝牙。详情请参阅各平台的蓝牙文档。
void QBluetoothLocalDevice::requestPairing(const QBluetoothAddress &address, QBluetoothLocalDevice::Pairing pairing)
使用 `address` 设置 `pairing ` 状态。结果通过信号 `pairingFinished()` 返回。
在 Android 和 macOS 上,无法将设备状态设为“未配对”(AuthorizedPaired ),其行为将与“已配对”(Paired)相同。在 Windows 上,具体的配对模式由操作系统决定。
在 macOS 上,无法解除设备的配对关系。如果请求 Unpaired,尽管设备仍保持配对状态,但会立即触发pairingFinished() 信号。可以请求与之前已解除配对的设备重新配对。此外,AuthorizedPaired 的行为与Paired 相同。
注意:建立配对可能需要几分钟时间,并且可能需要用户确认。
void QBluetoothLocalDevice::setHostMode(QBluetoothLocalDevice::HostMode mode)
将此本地蓝牙设备的主机模式设置为mode 。
某些状态转换(例如设备开机或关机)可能需要一定时间。因此,后续调用应仅在 `hostModeStateChanged()` 信号确认前一次请求已完成之后才进行。若忽略此要求,此类连续调用的结果将未定义。
注意:由于受 支持平台上的安全策略各不相同,此方法在不同平台上的行为可能有所差异。例如,系统在开启或关闭蓝牙前可能会要求用户确认,且并非所有主机模式都受支持。 在 macOS 上,无法通过编程方式更改hostMode() 的状态。用户只能在“系统偏好设置”中开启或关闭蓝牙。在 Windows 上,由于可能需要用户确认,因此必须从 UI 线程调用此方法。详情请参阅各平台的蓝牙文档。
另请参阅 hostMode()。
© 2026 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.