Spec-Zone.ru › Qt 6.1

Класс 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

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

Общедоступные типы

перечисление Состояние { Некорректно, Промежуточное, Корректно }

Общедоступные функции

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 изменился()

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

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

Если встроенные валидаторы недостаточно функциональны, можно создать подкласс 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, QRegularExpressionValidator и Пример полей ввода.

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

перечисление QValidator::Состояние

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

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

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

QValidator::QValidator(QObject *parent = nullptr)

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

[signal] void QValidator::изменился()

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

[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.1/qvalidator.html

Spec-Zone.ru

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