QIntValidator returns 中间有效输入

QIntValidator returns Intermediate in valid input

我有一个 QIntValidator(int min, int max, QWidget* parent) 设置,但它 returns QValidator::Intermediate 的输入介于最小值和最大值之间(即有效)。

我正在使用此 QIntValidator 检查输入(整数)是否介于稳定的最小值和最大值之间。如果不是,则丢弃输入,将编辑器返回到其先前的值。

假设最小值为 1,最大值为 2147483648。如果用户输入例如数字 3,则它 returns QValidator::Intermediate。这看起来很奇怪。知道为什么会这样吗?

QLineEdit *lnEdt = reinterpret_cast<QLineEdit*>(item);
QString valData = lnEdt->text(); // "3"
int nRow = ui->listWidget->currentRow();

if(editor == QVariant::Int) //the type of input, in this case, it's true
{
    qDebug() << minimum; //1
    qDebug() << maximum; //2147483648
    QValidator *validator = new QIntValidator(minimum.toInt(), maximum.toInt());
    int pos = 0;
    qDebug() << validator->validate(valData, pos); // QValidator::Intermediate
    if(validator->validate(valData, pos) != QValidator::Acceptable)
    //it falls in this condition, rejecting the input 
    //and setting the editor text to its previous value.
        ui->listWidget->item(nRow)->setText(currentSelectedValue);
}

http://doc.qt.io/qt-5/qintvalidator.html 表示这是预期行为(输入长度​​小于最大长度)。