2014-11-04 89 views
0

我是使用Qt的新手,我遇到了一些麻煩。Qt Creator在進入時禁用按鈕

我正在做一個簡單的終端應用程序,我需要在選中後禁用按鈕幾秒鐘。

我在做這樣的事情:

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

嘗試用QTimer :: SingleShot():

this->setEnabled(false); 
QTimer::singleShot(2000, this, SLOT(enableMyButton())); 
// you code 
void enableMyButton() 
{ 
    this->setEnabled(true); 
} 

它會調用

+0

我試過了,但仍然發生了同樣的事情後啓用按鈕2secs。如果按2次按鈕,它將執行2次該功能,並且我想在第一次敲擊後「阻止」按鈕,直到幾秒鐘過去(確認收到的所有內容)。 – 2014-11-05 16:21:14

+0

@JoseRafael等。你的按鈕的名稱是什麼? – 2014-11-05 17:54:58

+0

它是「讀卡器」(對象名稱正確:) :) – 2014-11-06 18:52:52