Qt 进动时禁用按钮

Qt 进动时禁用按钮,qt,Qt,我是新使用Qt的,我有一些问题 我正在做一个简单的终端应用程序,我需要禁用按钮几秒钟后,他们被选中 我在做这样的事情: void MainWindow::on_readcard_clicked(){ this->setEnabled(false); //Send Command QString commandString = ""; commandString.append('1'); commandString.append("\n"); QByteArray commandAr

我是新使用Qt的,我有一些问题

我正在做一个简单的终端应用程序,我需要禁用按钮几秒钟后,他们被选中

我在做这样的事情:

void MainWindow::on_readcard_clicked(){

this->setEnabled(false);

//Send Command
QString commandString = "";

commandString.append('1');
commandString.append("\n");

QByteArray commandArray = commandString.toLocal8Bit();

serial->write(commandArray);

//Read Card
QByteArray data = serial->readLine(12);

QString dataString = 0;
dataString.append(data);
ui->cardnumber->setText(dataString);
dataString.clear();
data.clear();

QByteArray saldo = serial->readAll();

QString saldoString = 0;
saldoString.append(saldo);
ui->balance->setText(saldoString);
saldoString.clear();
saldo.clear();

this->setEnabled(true);}
我需要这个,因为如果有人在完成第一次点击之前按下按钮两次,我会得到一个包含大量垃圾的“疯狂”数组。 我也尝试过使用“WaitForBytesWrite”和“waitForReadyRead”,但在处理完所有内容之前,它并没有阻止连接


关于

尝试使用QTimer::SingleShot():


它会在通话后2秒启用按钮

我试过了,但还是发生了同样的事情。如果我按下按钮2次,它将执行功能2次,我想在第一次点击后“阻止”按钮,直到几秒钟过去(以确认所有内容都已收到)。@JoseRafael等待。你的按钮叫什么名字?
this->setEnabled(false);
QTimer::singleShot(2000, this, SLOT(enableMyButton()));
// you code
void enableMyButton()
{
    this->setEnabled(true);
}