我有一个QIntValidator(int min, int max, QWidget* parent)
设置,但它返回QValidator::Intermediate
的输入介于最小值和最大值之间(即有效)。
我正在使用这个 QIntValidator 来检查输入(整数)是否在最小值和最大值之间稳定。如果不是,则丢弃输入,将编辑器返回到之前的值。
假设最小值为 1,最大值为 2147483648。如果用户输入,例如数字 3,则返回 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);
}