Qt/C++ 获取 QBluetoothLocalDevice 列表
Qt/C++ Get list of QBluetoothLocalDevice
在我的设备上,我连接了多个蓝牙适配器。就我而言,我想获取有关连接到第二个适配器的设备的一些信息(专门调用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
?(,但显示的代码不会编译,因为它试图分配一个继承自QObject
的QBluetoothLocalDevice
,因此不可分配/复制。
相反,您可能应该返回一个指向新创建的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
限定。
相关文章:
- 没有找到相关文章