У меня есть 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);
}