QValidator: Пример использования

QValidator Пример использования

Если в Qt-приложении требуется обеспечить контроль вводимых пользователем данных, то вы можете ограничить варианты выбора с помощью чек-боксов, радио-кнопок, комбо-боксов, выпадающих списков или схожих виджетов. Но если возникла необходимость предусмотреть большую свободу выбора, то задумайтесь об использовании валидатора QValidator.

QIntValidator, QDoubleValidator и QRegExpValidator

Если ввод пользователя должен быть ограничен целыми числами или числами с плавающей запятой, то вам может подойти один из стандартных валидаторов: QIntValidator и QDoubleValidator соответственно. Для проведения более общих проверок попробуйте QRegExpValidator, основанный на регулярных выражениях. Рассмотрим пример их использования (файл main.cpp):

После сборки и запуска приложения имеем:

В результате нажатия на кнопке Print вызывается слот onPrint(), в котором на консоль выводится:

Обратите внимание, что корректность содержимого поля ввода перед выводом на консоль проверяется еще раз с помощью hasAcceptableInput(). Такое поведение объясняется тем, что пользователь вводит символы последовательно, а не за один раз. Если бы проверки на соответствие ограничениям были жесткими, то ввести не удалось бы вообще ничего. Поэтому частично соответствующее содержимое ввести можно, но оно не будет допустимым:

Вывод на консоль после нажатия на кнопку Print:

В этом случае поля ввода с некорректным содержимым можно выделять красным цветом или отображать рядом с ними иконки с уведомлениями об ошибке.

Следует заметить, что для контроля ввода чисел более естественным вариантом представляется использование спин-боксов QSpinBox и QDoubleSpinBox. Однако все зависит от ваших задач.

Для большинства приложений вполне достаточно тех стандартных валидаторов, которые мы рассмотрели. Если же процедура проверки ввода достаточно сложная, то вы можете реализовать свой валидатор, наследующий абстрактный класс QValidator. Например, он может осуществлять проверку вводимых данных на основе запросов к базе данных или сведений из сети.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий