我在將值輸入QLineEdit時遇到問題。這更符合邏輯問題。我的要求是,我想要限制用戶輸入60到150之間的值,包括該範圍內的十進制值,即65.5或140.5等。如果輸入的值超出此範圍,我想向用戶顯示消息。在Qt中輸入特定數據到QLineEdit時發生問題
我的方法是這樣的:我在UI設計器中將此「QLineEdit」的「maxLength」屬性設置爲5,以便用戶只能輸入5個字符,如140.5。然後在「框TextChanged」插槽我寫了下面的代碼:
void MyWidget::on_lineEdit_textChanged(QString text)
{
if ((text.size() >= 3) && (text.toFloat() > 150 || text.toFloat() < 60))
{
QMessageBox::information(this, "Info", "Range should be between 60 and 150.", QMessageBox::Ok);
ui->lineEdit->setText("");
}
else
{
ui->lineEdit->setText(text);
}
}
還用下面的代碼如驗證:
QRegExp rx("^[-+]?[0-9]*\\.?[0-9]+$");
QValidator *validator = new QRegExpValidator(rx, this);
ui->lineEdit->setValidator(validator);
上面的代碼工作正常。唯一的問題是,如果值先小於60,那麼消息不會顯示,因爲我正在檢查條件[B](text.size()> = 3)[/ B]。消息僅在text.size()> = 3時顯示。我無法爲此情況設置正確的邏輯。是否可以更改邏輯以顯示用戶滿足的範圍。 請讓我知道。 謝謝。
我會認爲它非常破碎和令人討厭的UI,如果消息框彈出在我的臉上,因爲我鍵入。更好地顯示警告標籤和/或禁用確認按鈕和/或使用QDoubleValidator防止無效輸入。或者使用QDoubleSpinBox。 – 2012-02-22 18:19:44