void WBlueTooth::connectToDevice(const QString& deviceAddress) { if (!localDevice->isValid()) { _ui->recv->append("本地蓝牙设备不可用"); return; } QBluetoothAddress address(deviceAddress); QBluetoothDeviceInfo deviceInfo(address); if (!deviceInfo.isValid()) { _ui->recv->append("无效的蓝牙设备地址"); return; } QBluetoothSocket* socket = new QBluetoothSocket(QBluetoothServiceInfo::RfcommProtocol); socket->connectToService(deviceInfo.address(), QBluetoothUuid(QBluetoothUuid::SerialPort)); connect(socket, &QBluetoothSocket::connected, this, [=]() { _ui->recv->append("已连接到设备:" + deviceInfo.name()); // 连接成功后可以执行其他操作 }); connect(socket, QOverload<QBluetoothSocket::SocketError>::of(&QBluetoothSocket::error), this, [=](QBluetoothSocket::SocketError error) { _ui->recv->append("蓝牙连接错误:" + QString::number(error)); // 处理连接错误的情况 }); }其中这行代码有错QBluetoothDeviceInfo deviceInfo(address);错误类型error: no matching constructor for initialization of 'QBluetoothDeviceInfo'
时间: 2024-04-11 20:26:11 浏览: 127
这个错误是因为在这行代码中,QBluetoothDeviceInfo类没有接受QBluetoothAddress类型参数的构造函数。要实例化QBluetoothDeviceInfo对象,可以使用QBluetoothDeviceDiscoveryAgent类的静态函数来获取设备信息。以下是修正后的代码示例:
```cpp
void WBlueTooth::connectToDevice(const QString& deviceAddress)
{
if (!localDevice->isValid()) {
_ui->recv->append("本地蓝牙设备不可用");
return;
}
QBluetoothAddress address(deviceAddress);
QBluetoothDeviceInfo deviceInfo = QBluetoothDeviceDiscoveryAgent::remoteDevice(address);
if (!deviceInfo.isValid()) {
_ui->recv->append("无效的蓝牙设备地址");
return;
}
QBluetoothSocket* socket = new QBluetoothSocket(QBluetoothServiceInfo::RfcommProtocol);
socket->connectToService(deviceInfo.address(), QBluetoothUuid(QBluetoothUuid::SerialPort));
connect(socket, &QBluetoothSocket::connected, this, [=]() {
_ui->recv->append("已连接到设备:" + deviceInfo.name());
// 连接成功后可以执行其他操作
});
connect(socket, QOverload<QBluetoothSocket::SocketError>::of(&QBluetoothSocket::error), this, [=](QBluetoothSocket::SocketError error) {
_ui->recv->append("蓝牙连接错误:" + QString::number(error));
// 处理连接错误的情况
});
}
```
修正后的代码中使用了`QBluetoothDeviceDiscoveryAgent::remoteDevice`函数来获取设备信息,并将其赋值给`deviceInfo`对象。这样就可以避免了构造函数的错误。
阅读全文
相关推荐



















