Qt/C++ 获取 QBluetoothLocalDevice 列表

Qt/C++ Get list of QBluetoothLocalDevice

本文关键字:QBluetoothLocalDevice 列表 获取 C++ Qt      更新时间:2023-10-16

在我的设备上,我连接了多个蓝牙适配器。就我而言,我想获取有关连接到第二个适配器的设备的一些信息(专门调用pairingStatus((。为此,我需要获取提供此信息的QBluetoothLocalDevice实例。问题是在知道适配器的地址时我无法构造实例:

QBluetoothLocalDevice BluetoothConnector::getBluetoothAdapter()
{
QList<QBluetoothHostInfo> adapters = QBluetoothLocalDevice::allDevices();
QBluetoothLocalDevice device = QBluetoothLocalDevice(QBluetoothAddress());
if(adapters.size() >= 2)
{
device = QBluetoothLocalDevice(adapters.at(1).address());
}
return device;
}

这是因为构造函数被声明为显式。如何构造或获取作为第二个适配器的 QBluetoothLocalDevice?

您对问题的描述有点不清楚(例如,哪个构造函数被声明为explicit?(,但显示的代码不会编译,因为它试图分配一个继承自QObjectQBluetoothLocalDevice,因此不可分配/复制。

相反,您可能应该返回一个指向新创建的QBluetoothLocalDevice的智能指针,并让调用方决定如何处理它......

std::unique_ptr<QBluetoothLocalDevice> BluetoothConnector::getBluetoothAdapter ()
{
auto adapters = QBluetoothLocalDevice::allDevices();
if (adapters.size() >= 2)
return std::make_unique<QBluetoothLocalDevice>(adapters.at(1).address());
/*
* No adaptor found so throw an exception.  You may want to return
* a default constructed std::unique_ptr instead.
*/
throw std::out_of_range("no adaptor found");
}

顺便说一句,BluetoothConnector::getBluetoothAdapter的实现似乎不会修改任何成员变量,因此应该const限定。

相关文章:
  • 没有找到相关文章