Spec-Zone.ru › Qt 5.11

Класс QValidator

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

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

QDoubleValidator, QIntValidator, QRegExpValidator и QRegularExpressionValidator

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

Типы public

Перечисление State { Invalid, Intermediate, Acceptable }

Функции 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
  • 34 функции public, унаследованные от QObject

Сигналы

void changed()
  • 2 сигнала, унаследованные от QObject

Дополнительные унаследованные члены

  • 1 свойство, унаследованное от QObject
  • 1 public слот, унаследованный от QObject
  • 1 public переменная, унаследованная от QObject
  • 10 статические public члены, унаследованные от QObject
  • 9 защищенные функции, унаследованные от QObject
  • 2 защищенные переменные, унаследованные от QObject

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

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

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

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

validate() должна быть реализована каждым подклассом. Она возвращает Invalid, Intermediate или Acceptable в зависимости от того, является ли её аргумент валидным (в соответствии с определением подкласса).

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

Вот некоторые примеры:

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

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

У валидатора есть локали, установленная с помощью 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 = nullptr)

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

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

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

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

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

Spec-Zone.ru

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