Spec-Zone.ru › Qt 5.14

Класс QValidator

Класс QValidator обеспечивает валидацию вводимого текста. Подробнее...

Заголовок: #include <QValidator>
qmake: QT += gui
Наследуется от: QObject
Наследующие классы:

QDoubleValidator, QIntValidator, QRegExpValidator и QRegularExpressionValidator

  • Список всех членов, включая унаследованные

Типы public

Перечисление State { Недействительное, Промежуточное, Допустимое }

Функции public

QValidator(QObject *parent = nullptr)
виртуальный ~QValidator()
виртуальный void fixup(QString &input) const
QLocale locale() const
void setLocale(const QLocale &locale)
виртуальный QValidator::State validate(QString &input, int &pos) const = 0

Сигналы

void changed()

Подробное описание

Сам класс является абстрактным. Два подкласса, QIntValidator и QDoubleValidator, обеспечивают основную проверку диапазона числовых значений, а QRegExpValidator предоставляет общую проверку с использованием пользовательского регулярного выражения.

Если встроенных валидаторов недостаточно, вы можете создать подкласс QValidator. Класс имеет две виртуальные функции: validate() и fixup().

validate() должна быть реализована каждым подклассом. Она возвращает Недействительное, Промежуточное или Допустимое в зависимости от того, является ли её аргумент валидным (для определения подкласса).

Эти три состояния требуют некоторого объяснения. Строка Недействительное очевидно недействительна. Промежуточное менее очевидно: понятие валидности трудно применить, когда строка неполная (ещё редактируется). QValidator определяет Промежуточное как свойство строки, которая не является явно недействительной и не является допустимым окончательным результатом. Допустимое означает, что строка допустима в качестве окончательного результата. Можно сказать, что любая строка, которая является вероятным промежуточным состоянием во время ввода Допустимой строки, является Промежуточной.

Вот несколько примеров:

  • Для поля редактирования, принимающего целые числа от 10 до 1000 включительно, 42 и 123 являются Допустимыми, пустая строка и 5 являются Промежуточными, а "asdf" и 1114 являются Недействительными.
  • Для изменяемого выпадающего списка, принимающего URL-адреса, любой правильно сформированный URL-адрес является Допустимым, "http://example.com/," является Промежуточным (это может быть действие вырезания и вставки, которое случайно добавило запятую в конце), пустая строка является Промежуточной (пользователь может выделить и удалить весь текст в подготовке к вводу нового URL-адреса), а "http:///./" является Недействительным.
  • Для поля редактирования, принимающего длины, "11cm" и "1in" являются Допустимыми, "11" и пустая строка являются Промежуточными, а "http://example.com" и "hour" являются Недействительными.

fixup() предоставляется для валидаторов, которые могут исправить некоторые ошибки пользователя. По умолчанию она ничего не делает. QLineEdit, например, вызовет fixup() если пользователь нажмёт Enter, а содержимое в данный момент не является валидным. Это позволяет функции fixup() выполнить некоторую магию, чтобы превратить Недействительную строку в Допустимую.

Валидатор имеет локаль, устанавливаемую с помощью setLocale(). Как правило, она используется для разбора данных с учётом локали. Например, QIntValidator и QDoubleValidator используют её для разбора представлений целых чисел и чисел с плавающей точкой с учётом локали.

QValidator обычно используется с QLineEdit, QSpinBox и QComboBox.

См. также QIntValidator, QDoubleValidator, QRegExpValidator и Пример с полями редактирования.

Документация по типам членов

enum QValidator::State

Это перечисление определяет состояния, в которых может находиться валидируемая строка.

Константа Значение Описание
QValidator::Invalid 0 Строка очевидно недействительна.
QValidator::Intermediate 1 Строка является вероятным промежуточным значением.
QValidator::Acceptable 2 Строка допустима как окончательный результат; т.е. она валидна.

Документация по функциям членов

QValidator::QValidator(QObject *parent = nullptr)

Настраивает валидатор. Параметр parent передаётся конструктору QObject.

[signal] void QValidator::changed()

Этот сигнал излучается, когда любой свойство, которое может повлиять на валидность строки, изменилось.

[virtual] QValidator::~QValidator()

Удаляет валидатор, освобождая любое выделенное хранилище и другие ресурсы.

[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] QValidator::State QValidator::validate(QString &input, int &pos) const

Эта виртуальная функция возвращает Недействительное, если input недействительна согласно правилам этого валидатора, Промежуточное, если существует вероятность, что небольшое редактирование сделает вход допустимым (например, пользователь вводит "4" в виджет, который принимает целые числа от 10 до 99), и Допустимое, если вход валиден.

Функция может изменять как input, так и pos (позицию курсора), если необходимо.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.14/qvalidator.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API