Класс QIntValidator
Класс QIntValidator предоставляет валидатор, который гарантирует, что строка содержит целое число в заданном диапазоне. Подробнее...
| Заголовок: | #include <QIntValidator> |
| CMake: | find_package(Qt6 COMPONENTS Gui REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
| Наследуется от: | QValidator |
Свойства
Открытые функции
| QIntValidator(int minimum, int maximum, QObject *parent = nullptr) | |
| QIntValidator(QObject *parent = nullptr) | |
| virtual | ~QIntValidator() |
| int | bottom() const |
| void | setBottom(int) |
| 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 возвращает Промежуточное. Значения, состоящие из числа цифр, равного или меньшего максимального значения, считаются промежуточными. Это сделано для того, чтобы цифра, которая препятствует попаданию числа в диапазон, не обязательно была последней набранной цифрой. Это также означает, что промежуточное число может иметь ведущие нули.
Минимальное и максимальное значения устанавливаются в одном вызове setRange() или по отдельности с помощью setBottom() и setTop().
QIntValidator использует свой locale() для интерпретации числа. Например, в арабских локали QIntValidator будет принимать арабские цифры.
Примечание: QLocale::NumberOptions, установленные в locale(), также влияют на способ интерпретации числа. Например, так как QLocale::RejectGroupSeparator по умолчанию не установлена, валидатор будет принимать разделители групп. Поэтому рекомендуется использовать QLocale::toInt() для получения числового значения.
См. также QDoubleValidator, QRegularExpressionValidator, 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.
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 — это целое число в допустимом диапазоне. Если input содержит не более цифр, чем верхняя граница диапазона, или является префиксом целого числа в допустимом диапазоне, возвращает Intermediate. В противном случае возвращает Invalid.
Если допустимый диапазон состоит только из положительных целых чисел (например, от 32 до 100) и input — отрицательное целое число, возвращается Invalid. (С другой стороны, если диапазон состоит из отрицательных целых чисел (например, от -100 до -32) и input — положительное целое число, то возвращается Intermediate, так как пользователь может быть близок к вводу минуса (особенно для языков с письмом справа налево).
Аналогично, если допустимый диапазон находится между 46 и 53, то 41 и 59 будут оцениваться как Intermediate, иначе пользователь не сможет изменить значение с 49 на 51.
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-6.1/qintvalidator.html