Класс QValidator
Класс QValidator обеспечивает валидацию входного текста. Подробнее...
| Заголовок: | #include <QValidator> |
| qmake: | QT += gui |
| Наследует: | QObject |
| Наследуется от: | QDoubleValidator, QIntValidator, QRegExpValidator и QRegularExpressionValidator |
Открытые типы
| перечисление | State { Недействительное, Промежуточное, Допустимое } |
Открытые функции
| QValidator(QObject *parent = Q_NULLPTR) | |
| ~QValidator() | |
| виртуальный void | fixup(QString &input) const |
| QLocale | locale() const |
| void | setLocale(const QLocale &locale) |
| виртуальный State | validate(QString &input, int &pos) const = 0 |
- 31 открытых функций унаследовано от QObject
Сигналы
| void | changed() |
- 2 сигнала унаследовано от QObject
Дополнительные унаследованные члены
- 1 свойство унаследовано от QObject
- 1 открытый слот унаследован от QObject
- 11 статические открытые члены унаследованы от QObject
- 9 защищённые функции унаследованы от QObject
Подробное описание
Класс QValidator обеспечивает валидацию входного текста.
Сам класс является абстрактным. Два подкласса, QIntValidator и QDoubleValidator, обеспечивают базовые проверки диапазона чисел, а QRegExpValidator предоставляет общую проверку с использованием пользовательского регулярного выражения.
Если встроенные валидаторы недостаточны, вы можете создать подкласс QValidator. Класс имеет две виртуальные функции: validate() и fixup().
validate() должна быть реализована каждым подклассом. Она возвращает Недействительное, Промежуточное или Допустимое в зависимости от того, является ли её аргумент допустимым (согласно определению подкласса).
Эти три состояния требуют некоторого объяснения. Строка Недействительное очевидно недействительна. Промежуточное менее очевидно: концепция допустимости трудно применима, когда строка неполна (ещё редактируется). QValidator определяет Промежуточное как свойство строки, которая не является явно недействительной и не является приемлемым конечным результатом. Допустимое означает, что строка приемлема как конечный результат. Можно сказать, что любая строка, являющаяся возможным промежуточным состоянием при вводе Допустимой строки, является Промежуточной.
Вот несколько примеров:
- Для поля редактирования, принимающего целые числа от 10 до 1000 включительно, 42 и 123 являются Допустимыми, пустая строка и 5 являются Промежуточными, а "asdf" и 1114 являются Недействительными.
- Для изменяемого выпадающего списка, принимающего URL-адреса, любой правильно сформированный URL-адрес является Допустимым, "http://example.com/," является Промежуточным (возможно, это действие копирования-вставки, которое случайно добавило запятую в конце), пустая строка является Промежуточной (пользователь может выделить и удалить весь текст в подготовке к вводу нового URL-адреса), а "http:///./" является Недействительным.
- Для поля с числовыми значениями, принимающего длины, "11см" и "1дюйм" являются Допустимыми, "11" и пустая строка являются Промежуточными, а "http://example.com" и "час" являются Недействительными.
fixup() предоставляет валидаторам возможность исправить некоторые ошибки пользователя. По умолчанию реализация ничего не делает. QLineEdit, например, вызовет fixup() если пользователь нажмет Enter (или Возврат), а содержимое в данный момент недействительно. Это даёт функции fixup() возможность произвести некоторые действия, чтобы сделать Недействительную строку Допустимой.
Валидатор имеет локаль, задаваемую с помощью setLocale(). Она обычно используется для анализа локализованных данных. Например, QIntValidator и QDoubleValidator используют её для анализа локализованных представлений целых чисел и чисел с плавающей точкой.
Класс QValidator обычно используется с QLineEdit, QSpinBox и QComboBox.
См. также QIntValidator, QDoubleValidator, QRegExpValidator и Пример Полей редактирования.
Документация по типу членов
перечисление QValidator::State
Это перечисление определяет состояния, в которых может находиться проверенная строка.
| Константа | Значение | Описание |
|---|---|---|
QValidator::Invalid |
0 |
Строка очевидно недействительна. |
QValidator::Intermediate |
1 |
Строка является вероятным промежуточным значением. |
QValidator::Acceptable |
2 |
Строка допустима в качестве конечного результата; т.е. она действительна. |
Документация по функциям-членам
QValidator::QValidator(QObject *parent = Q_NULLPTR)
Инициализирует валидатор. Параметр parent передаётся конструктору QObject.
QValidator::~QValidator()
Удаляет валидатор, освобождая используемые ресурсы.
[signal] void QValidator::changed()
Этот сигнал испускается, когда изменяется любое свойство, которое может повлиять на действительность строки.
[virtual] void QValidator::fixup(QString &input) const
Эта функция пытается изменить input так, чтобы она соответствовала правилам валидации. Она не обязательно приводит к валидной строке: вызывающие функции должны повторно проверить результат; по умолчанию ничего не делает.
Переопределения этой функции могут изменять input, даже если не приводят к валидной строке. Например, валидатор ISBN может захотеть удалить все символы, кроме цифр и "-", даже если результат всё ещё не является валидным ISBN; валидатор фамилии может захотеть удалить пробелы в начале и конце строки, даже если полученная строка не находится в списке допустимых фамилий.
QLocale QValidator::locale() const
Возвращает локаль для валидатора. Локаль по умолчанию инициализируется так же, как QLocale().
См. также setLocale() и QLocale::QLocale().
void QValidator::setLocale(const QLocale &locale)
Устанавливает locale, который будет использоваться для валидатора. Если функция setLocale не была вызвана, валидатор будет использовать локаль по умолчанию, установленную с помощью QLocale::setDefault(). Если локаль по умолчанию не установлена, используется локаль операционной системы.
См. также locale() и QLocale::setDefault().
[pure virtual] State QValidator::validate(QString &input, int &pos) const
Эта виртуальная функция возвращает Недействительное, если input недействительна согласно правилам этого валидатора, Промежуточное, если есть вероятность, что небольшое изменение ввода сделает его допустимым (например, пользователь вводит "4" в поле, которое принимает целые числа от 10 до 99), и Допустимое, если ввод действителен.
END_OF_DOCUMENT_MARKERФункция может изменить как input, так и pos (позицию курсора), если это необходимо.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qvalidator.html