Spec-Zone.ru › Qt 5.15

Класс 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:///./" — Недействительным.
  • Для поля ввода, которое принимает длины, "11см" и "1дюйм" являются Приемлемыми, "11" и пустая строка являются Промежуточными, а "http://example.com" и "час" — Недействительными.

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

Spec-Zone.ru

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