Класс QRegExpValidator
Класс QRegExpValidator используется для проверки строки на соответствие регулярному выражению. Подробнее...
| Заголовок: | #include <QRegExpValidator> |
| qmake: | QT += gui |
| Наследуется от: | QValidator |
Свойства
- regExp : QRegExp
Открытые функции
| QRegExpValidator(const QRegExp &rx, QObject *parent = nullptr) | |
| QRegExpValidator(QObject *parent = nullptr) | |
| virtual | ~QRegExpValidator() |
| const QRegExp & | regExp() const |
| void | setRegExp(const QRegExp &rx) |
Переопределённые открытые функции
| virtual QValidator::State | validate(QString &input, int &pos) const override |
Сигналы
| void | regExpChanged(const QRegExp ®Exp) |
Подробное описание
QRegExpValidator использует регулярное выражение (regexp) для определения является ли входная строка Приемлемой, Промежуточной или Недействительной. Регулярное выражение может быть задано при создании QRegExpValidator или позднее.
При определении является ли строка Приемлемой или нет, regexp обрабатывается так, как будто он начинается с утверждения начала строки (^) и заканчивается утверждением конца строки ($); соответствие происходит со всей входной строкой или с заданной позиции, если позиция начала больше нуля.
Если строка является префиксом Приемлемой строки, она считается Промежуточной. Например, "" и "A" являются Промежуточными для regexp [A-Z][0-9] (в то время как "_" будет Недействительной).
Краткое введение в движок регулярных выражений Qt см. в QRegExp.
Пример использования:
// regexp: optional '-' followed by between 1 and 3 digits
QRegExp rx("-?\\d{1,3}");
QValidator *validator = new QRegExpValidator(rx, this);
QLineEdit *edit = new QLineEdit(this);
edit->setValidator(validator); Ниже приведены некоторые примеры валидаторов. На практике они обычно ассоциируются с виджетом, как в примере выше.
// integers 1 to 9999
QRegExp rx("[1-9]\\d{0,3}");
// the validator treats the regexp as "^[1-9]\\d{0,3}$"
QRegExpValidator v(rx, 0);
QString s;
int pos = 0;
s = "0"; v.validate(s, pos); // returns Invalid
s = "12345"; v.validate(s, pos); // returns Invalid
s = "1"; v.validate(s, pos); // returns Acceptable
rx.setPattern("\\S+"); // one or more non-whitespace characters
v.setRegExp(rx);
s = "myfile.txt"; v.validate(s, pos); // Returns Acceptable
s = "my file.txt"; v.validate(s, pos); // Returns Invalid
// A, B or C followed by exactly five digits followed by W, X, Y or Z
rx.setPattern("[A-C]\\d{5}[W-Z]");
v.setRegExp(rx);
s = "a12345Z"; v.validate(s, pos); // Returns Invalid
s = "A12345Z"; v.validate(s, pos); // Returns Acceptable
s = "B12"; v.validate(s, pos); // Returns Intermediate
// match most 'readme' files
rx.setPattern("read\\S?me(\.(txt|asc|1st))?");
rx.setCaseSensitive(false);
v.setRegExp(rx);
s = "readme"; v.validate(s, pos); // Returns Acceptable
s = "README.1ST"; v.validate(s, pos); // Returns Acceptable
s = "read me.txt"; v.validate(s, pos); // Returns Invalid
s = "readm"; v.validate(s, pos); // Returns Intermediate См. такжеQRegExp, QIntValidator, QDoubleValidator и Пример редактора настроек.
Документация по свойству
regExp : QRegExp
Это свойство содержит регулярное выражение, используемое для валидации.
По умолчанию это свойство содержит регулярное выражение с шаблоном .* , которое соответствует любой строке.
Функции доступа:
| const QRegExp & | regExp() const |
| void | setRegExp(const QRegExp &rx) |
Сигнал уведомления:
| void | regExpChanged(const QRegExp ®Exp) |
Документация по членам-функциям
QRegExpValidator::QRegExpValidator(const QRegExp &rx, QObject *parent = nullptr)
Конструктор валидатора с объектом parent, который принимает все строки, соответствующие регулярному выражению rx.
Сопоставление выполняется со всей строкой; например, если regexp равен [A-Fa-f0-9]+, он будет обрабатываться как ^[A-Fa-f0-9]+$.
QRegExpValidator::QRegExpValidator(QObject *parent = nullptr)
Конструктор валидатора с объектом parent, который принимает любые строки (включая пустую) как допустимые.
[virtual] QRegExpValidator::~QRegExpValidator()
Удаляет валидатор.
[override virtual] QValidator::State QRegExpValidator::validate(QString &input, int &pos) const
Переопределяет: QValidator::validate(QString &input, int &pos) const.
Возвращает Приемлемо, если input соответствует регулярному выражению этого валидатора, Промежуточно, если оно частично соответствует (т.е. может быть допустимым соответствием, если добавить дополнительные допустимые символы), и Недействительно, если input не соответствует.
Кроме того, если input не соответствует, параметр pos устанавливается в длину параметра input.
Например, если регулярное выражение равно \w\d\d (символ слова, цифра, цифра), то "A57" является Приемлемым, "E5" является Промежуточным, а "+9" является Недействительным.
См. такжеQRegExp::exactMatch().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.14/qregexpvalidator.html