Класс QIntValidator
Класс QIntValidator предоставляет валидатор, который гарантирует, что строка содержит допустимое целое число в заданном диапазоне. Подробнее...
| Заголовок: | #include <QIntValidator> |
| qmake: | QT += gui |
| Наследуется от: | QValidator |
Свойства
Открытые функции
| QIntValidator(int minimum, int maximum, QObject *parent = nullptr) | |
| QIntValidator(QObject *parent = nullptr) | |
| virtual | ~QIntValidator() |
| int | bottom() const |
| void | setBottom(int) |
| virtual void | setRange(int bottom, int top) |
| void | setTop(int) |
| int | top() const |
Переопределённые открытые функции
| virtual void | fixup(QString &input) const override |
| virtual QValidator::State | validate(QString &input, int &pos) const override |
Сигналы
| void | bottomChanged(int bottom) |
| void | topChanged(int top) |
Подробное описание
Пример использования:
QValidator *validator = new QIntValidator(100, 999, this); QLineEdit *edit = new QLineEdit(this); // the edit lineedit will only accept integers between 100 and 999 edit->setValidator(validator);
Ниже приведены некоторые примеры валидаторов. На практике они обычно ассоциируются с виджетом, как в примере выше.
QString str; int pos = 0; QIntValidator v(100, 900, this); str = "1"; v.validate(str, pos); // returns Intermediate str = "012"; v.validate(str, pos); // returns Intermediate str = "123"; v.validate(str, pos); // returns Acceptable str = "678"; v.validate(str, pos); // returns Acceptable str = "999"; v.validate(str, pos); // returns Intermediate str = "1234"; v.validate(str, pos); // returns Invalid str = "-123"; v.validate(str, pos); // returns Invalid str = "abc"; v.validate(str, pos); // returns Invalid str = "12cm"; v.validate(str, pos); // returns Invalid
Обратите внимание, что значение 999 возвращает Intermediate. Значения, состоящие из количества цифр, равного или меньшего максимальному значению, считаются промежуточными. Это сделано преднамеренно, так как цифра, которая препятствует вхождению числа в диапазон, не обязательно является последней набранной цифрой. Это также означает, что промежуточное число может иметь ведущие нули.
Минимальное и максимальное значения устанавливаются в одном вызове с помощью setRange() или индивидуально с помощью setBottom() и setTop().
QIntValidator использует свой locale() для интерпретации числа. Например, в арабских локалях QIntValidator будет принимать арабские цифры.
Примечание: Параметр QLocale::NumberOptions, установленный в locale(), также влияет на способ интерпретации числа. Например, поскольку QLocale::RejectGroupSeparator не установлен по умолчанию, валидатор будет принимать разделители групп. Поэтому рекомендуется использовать QLocale::toInt() для получения числового значения.
См. также QDoubleValidator, QRegExpValidator, QLocale::toInt() и Пример с полями ввода.
Документация по свойствам
bottom : int
Это свойство содержит минимально допустимое значение валидатора.
По умолчанию значение этого свойства определяется из минимального целого числа со знаком, доступного (обычно -2147483647).
Функции доступа:
| int | bottom() const |
| void | setBottom(int) |
Сигнал уведомления:
| void | bottomChanged(int bottom) |
См. также setRange().
top : int
Это свойство содержит максимально допустимое значение валидатора.
По умолчанию значение этого свойства определяется из максимального целого числа со знаком, доступного (обычно 2147483647).
Функции доступа:
| int | top() const |
| void | setTop(int) |
Сигнал уведомления:
| void | topChanged(int top) |
См. также setRange().
Документация по членам-функциям
QIntValidator::QIntValidator(int minimum, int maximum, QObject *parent = nullptr)
Конструктор валидатора с указанием parent, который принимает целые числа от minimum до maximum включительно.
QIntValidator::QIntValidator(QObject *parent = nullptr)
Конструктор валидатора с родительским объектом parent, который принимает все целые числа.
[virtual] QIntValidator::~QIntValidator()
Деструктор валидатора.
[override virtual] void QIntValidator::fixup(QString &input) const
Переопределяет: QValidator::fixup(QString &input) const.
[virtual] void QIntValidator::setRange(int bottom, int top)
Устанавливает диапазон валидатора, чтобы принимать только целые числа от bottom до top включительно.
[override virtual] QValidator::State QIntValidator::validate(QString &input, int &pos) const
Переопределяет: QValidator::validate(QString &input, int &pos) const.
Возвращает Acceptable, если input — целое число в допустимом диапазоне, Intermediate, если input — префикс целого числа в допустимом диапазоне, и Invalid в противном случае.
Если допустимый диапазон состоит только из положительных целых чисел (например, от 32 до 100), а input — отрицательное целое число, то возвращается Invalid. (С другой стороны, если диапазон состоит из отрицательных целых чисел (например, от -100 до -32), а input — положительное целое число, то возвращается Intermediate, поскольку пользователь может только что набрать минус (особенно для языков справа налево)).
int pos = 0; s = "abc"; v.validate(s, pos); // returns Invalid s = "5"; v.validate(s, pos); // returns Intermediate s = "50"; v.validate(s, pos); // returns Acceptable
По умолчанию параметр pos не используется этим валидатором.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/qintvalidator.html