【发布时间】:2017-10-30 12:14:43
【问题描述】:
我正在开发适用于 Android 的 QT Quick Controls 2 应用程序,并使用 Qt 蓝牙与设备进行通信。
通过单击一个按钮(使用onClicked() 信号),应用程序调用我的 c++ 类的一个函数来进行蓝牙通信。它将命令发送到设备并等待答复。到目前为止,它运行良好。
现在我的问题:
单击时禁用按钮,调用蓝牙功能,然后再次启用按钮,以防止在等待应答时多次单击,但是,尽管其属性 enabled 为 false,但按钮在等待时发出 onClicked() 信号。
当蓝牙对话框完成后我不启用该按钮时,它只能单击一次(如预期的那样),但我希望再次启用它。
信号的多次发射会导致硬件后端出现相关问题。
知道如何解决这个问题吗?
按钮 onClicked() 信号:
bEdit.onClicked: {
bEdit.enabled = false;
btConnect.fill("1", "30");
bEdit.enabled = true;
}
蓝牙读写:
unsigned int Bluetooth::fill(QString slot, QString volume)
{
QString output = ("CK Fill " + slot + " " + volume + "\r\n");
QByteArray baOutput = output.toLatin1();
static const QString serviceUuid(QStringLiteral("00001101-0000-1000-8000-00805F9B34FB"));
socket->connectToService(QBluetoothAddress("98:d3:32:20:46:b9"), QBluetoothUuid(serviceUuid), QIODevice::ReadWrite);
socket->write(baOutput);
QString input = "";
while(input == "")
{
input = socket->readAll();
}
qDebug() << input;
return 0;
}
【问题讨论】:
-
请向我们展示您的代码。很可能蓝牙功能没有阻塞,立即返回。