Spec-Zone.ru › Qt 5.13

Класс QValidator

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

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

QDoubleValidator, QIntValidator, QRegExpValidator и QRegularExpressionValidator

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

Открытые типы

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

Открытые функции

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 и Пример полей ввода.

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

перечисление 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.13/qvalidator.html

Spec-Zone.ru

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