Позвольте мне использовать пример, чтобы объяснить проблему.DoubleValidator не проверяет диапазоны правильно
Если мы имеем TextField
как это,
TextField {
text: "0.0"
validator: DoubleValidator { bottom: -359.9;
top: 359.9;
decimals: 1;
notation: DoubleValidator.StandardNotation }
onEditingFinished: {
console.log("I'm here!");
}
}
Мы можем вводить цифры, такие как 444.9
, 399.9
или -555.5
. Как вы можете видеть, значения не находятся между -359.9
и 359.9
.
В documentation можно найти следующую информацию:
Input принимается, но недопустимый, если он содержит двойной, которое вне диапазона или находится в неправильном формате; например со слишком большим числом цифр после десятичной точки или пустым.
Я думал, что DoubleValidator
не принял такие вещи, но, к сожалению, это так.
Поэтому я предполагаю, что решение будет состоять в том, чтобы проверить окончательный ввод, но опять-таки у нас есть проблема: editingFinished
испускается только в том случае, если валидатор возвращает приемлемое состояние, и это не всегда так.
Возможно, я не очень хорошо подхожу, я не понимаю, как использовать DoubleValidator
или, может быть, мне нужен код на C++.
Кстати, я работаю с Qt 5.4.
Двойной валидатор предотвращает принятие недопустимых значений при нажатии клавиши ввода. Разве это не то, что вы хотите? –
@xsquared На самом деле, если я печатаю 500, «TextField» показывает это значение, и если я нажимаю клавишу ввода или меняю на другой «TextField» в окне, данные не очищаются. У вас есть небольшой пример, чтобы проверить, что вы сказали? – Tarod
Я снова проверил документацию и действительно нашел проблему. Пожалуйста, прочтите мой ответ ниже, я надеюсь, что это поможет вам. –