我想搜索可用的蓝牙设备并列出它们,但我从documenation关注的代码不起作用。
BluetoothDevices::BluetoothDevices(QObject *parent) : QObject(parent)
{
}
// search Bluetooth devices
void BluetoothDevices::startDeviceDiscovery()
{
qDebug() << "Bluetooth discovery started";
// Create a discovery agent and connect to its signals
//QBluetoothDeviceDiscoveryAgent *discoveryAgent = new QBluetoothDeviceDiscoveryAgent(this);
discoveryAgent = new QBluetoothDeviceDiscoveryAgent(this);
connect(discoveryAgent, SIGNAL(deviceDiscovered(QBluetoothDeviceInfo)),
this, SLOT(deviceDiscovered(QBluetoothDeviceInfo)));
// Start a discovery
discoveryAgent->start();
}
void BluetoothDevices::deviceDiscovered(const QBluetoothDeviceInfo &device)
{
qDebug() << "Found new device:" << device.name() << '(' << device.address().toString() << ')';
}
在主窗口中,我开始搜索:
void MainWindow::on_pushButtonSearchBluetooth_clicked()
{
bluetoothDevices.startDeviceDiscovery();
}
我希望在找到deviceDiscovered()
插槽时使用设备名称调用它,但是这个插槽永远不会被调用。在发现之后,我再也听不到任何回复。当我从控制面板手动搜索蓝牙设备时,它确实找到了几台笔记本电脑。我还需要做些什么来通过我的应用程序找到它们?
我正在使用Windows 7和Qt 5.5。
答案 0 :(得分:1)
我有同样的问题。你可以连接信号
connect(m_discoveryAgent, SIGNAL(error(QBluetoothServiceDiscoveryAgent::Error)), this, SLOT(error(QBluetoothServiceDiscoveryAgent::Error)));
,您可以看到发出错误InvalidBluetoothAdapterError的插槽。
我在WIN7和WIN10上尝试它并没有用。在Ubuntu中,相同的代码可以正常工作。
答案 1 :(得分:1)
似乎在Windows平台上不支持蓝牙。
目前,以下平台支持API:Android,iOS,Linux(BlueZ 4.x / 5.x)和OS X. 来自http://doc.qt.io/qt-5/qtbluetooth-index.html