Spec-Zone.ru › Qt 5.9

Класс QValidator

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

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

QDoubleValidator, QIntValidator, QRegExpValidator и QRegularExpressionValidator

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

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

Перечисление State { Некорректный, Промежуточный, Корректный }

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

QValidator(QObject *parent = Q_NULLPTR)
~QValidator()
виртуальный void fixup(QString &input) const
QLocale locale() const
void setLocale(const QLocale &locale)
виртуальный State validate(QString &input, int &pos) const = 0
  • 32 открытых функции унаследованы от QObject

Сигналы

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

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

  • 1 свойство унаследовано от QObject
  • 1 открытый слот унаследован от QObject
  • 11 статических открытых членов унаследованы от QObject
  • 9 защищенных функций унаследованы от QObject

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

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

Сам класс является абстрактным. Два подкласса, 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 (или Return) и содержимое в настоящее время не является корректным. Это даёт функции 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 = Q_NULLPTR)

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

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

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

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

END_OF_DOCUMENT_MARKER ```

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

Spec-Zone.ru

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