我是新手使用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);}
我需要这个,因为如果有人在完成处理第一次点击之前按两次按钮,我将得到一个带有大量垃圾的“疯狂”阵列。 我也尝试使用“waitForBytesWritten”和“waitForReadyRead”,但是在处理完所有内容之前它没有阻止连接。
此致
答案 0 :(得分:0)
尝试使用QTimer :: SingleShot():
this->setEnabled(false);
QTimer::singleShot(2000, this, SLOT(enableMyButton()));
// you code
void enableMyButton()
{
this->setEnabled(true);
}
在通话后启用按钮2秒