Название: Проблема с QDoubleValidator Отправлено: Timebird от Август 20, 2015, 18:17 Здравствуйте!
Для полей QLineEdit пишу "защиту от дурака" по книге Прохоренок. Нужно написать валидатор, который блокирует любые символы, кроме чисел на отрезке [0.00, 15.34]. Вопрос: почему такой метод не работает? По-прежнему можно вводить числа больше 15.34, вплоть 99,99. Код
Название: Re: Проблема с QDoubleValidator Отправлено: Igors от Август 20, 2015, 19:07 Для флотов невалидные значения должны отображаться в UI (но не приниматься). Пример:
диапазон 0.. 15.34. Юзер ввел 1.53, все валидно и хорошо. Теперь юзер заметил свою ошибку, оказывается надо было не 1.53 а 15.3. Блокируя невалидные значения в UI Вы поставите его в неприятное положение - ведь забить точку он не сможет, получится 153. И еще 1 точку тоже не может. Придется бедняге затирать все и вводить по новой, поминая автора "незлым тихим словом" :) Название: Re: Проблема с QDoubleValidator Отправлено: Timebird от Август 20, 2015, 19:17 Хммм, понятно, спасибо!)
А как тогда быть? Должен же быть валидатор под такие числа! Название: Re: Проблема с QDoubleValidator Отправлено: Igors от Август 21, 2015, 10:10 Хммм, понятно, спасибо!) Так он и есть, просто когда снимется фокус с этого edit, невалидное значение должно подрезаться до валидного и отобразитьсяА как тогда быть? Должен же быть валидатор под такие числа! Название: Re: Проблема с QDoubleValidator Отправлено: qate от Август 21, 2015, 12:57 Нужно написать валидатор, который блокирует любые символы, кроме чисел на отрезке [0.00, 15.34]. я лично против валидаторов - они мешают вводу, а проверку всеравно делать например я буду вводить 1234 - но не смогу, и не пойму почему а если по кнопке "ок" будет проверка с соответствующим сообщением, то валидатор лишний Название: Re: Проблема с QDoubleValidator Отправлено: __Heaven__ от Август 21, 2015, 13:23 А я люблю использовать уже готовое средство QDoubleSpinBox. И валидатор какой нужно встроен, и пользователю понятно, почему он не может ввести 1234
Название: Re: Проблема с QDoubleValidator Отправлено: Timebird от Август 21, 2015, 15:54 А после ввода проверку выполнять -- здоровенская идея! A как с помощью QDoubleSpinBox? :)
Название: Re: Проблема с QDoubleValidator Отправлено: __Heaven__ от Август 21, 2015, 16:02 Просто помещается на форму контрол, в который можно вводить числа двойной точности и делать инкремент по шагам. Задаётся ему мин, макс, точность и шаг инкремента. Всю грязную работу выполняет на ура. Кнопки можно заменить на +/- или вообще убрать, получится на вид как тот же QLineEdit.
Название: Re: Проблема с QDoubleValidator Отправлено: Igors от Август 21, 2015, 16:04 А после ввода проверку выполнять -- здоровенская идея! Так это в самом валидаторе и делается (не помню деталей но возможность этого точно есть)Название: Re: Проблема с QDoubleValidator Отправлено: Timebird от Август 21, 2015, 17:12 Больше всего понравилась затея ув. __Heaven__ сделать QDoubleSpinBox с декрементом по шагам.
А как теперь ограничить порог сверху? Название: Re: Проблема с QDoubleValidator Отправлено: __Heaven__ от Август 21, 2015, 17:24 См. документацию по QDoubleSpinBox (https://srinikom.github.io/pyside-docs/PySide/QtGui/QDoubleSpinBox.html)
def setDecimals (prec) def setMaximum (max) def setMinimum (min) def setSingleStep (val) |