Spec-Zone.ru › Qt

Класс QValidator

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

Заголовок: #include <QValidator>
CMake: find_package(Qt6 COMPONENTS Gui REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
Наследуется от: QObject
Наследует:

QDoubleValidator, QIntValidator, и 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, предоставляют базовые проверки диапазона чисел, а QRegularExpressionValidator предоставляет общие проверки с использованием пользовательского регулярного выражения.

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

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

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

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

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

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

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

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

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

См. также QIntValidator, QDoubleValidator, QRegularExpressionValidator и Пример полей ввода.

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

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

Spec-Zone.ru

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