如何使用Qt枚举蓝牙设备

时间:2015-10-01 15:22:33

标签: c++ qt bluetooth

我想搜索可用的蓝牙设备并列出它们,但我从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。

2 个答案:

答案 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