我在将值输入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