Класс QRegExpValidator
Класс QRegExpValidator используется для проверки строки на соответствие регулярному выражению. Подробнее...
| Заголовок: | #include <QRegExpValidator> |
| qmake: | QT += gui |
| Наследует: | QValidator |
Свойства
- regExp : QRegExp
- 1 свойство унаследовано от QObject
Открытые функции
| QRegExpValidator(QObject *parent = nullptr) | |
| QRegExpValidator(const QRegExp &rx, QObject *parent = nullptr) | |
| virtual | ~QRegExpValidator() |
| const QRegExp & | regExp() const |
| void | setRegExp(const QRegExp &rx) |
Переопределённые открытые функции
| virtual QValidator::State | validate(QString &input, int &pos) const override |
- 4 открытых функции унаследованы от QValidator
- 34 открытых функции унаследованы от QObject
Дополнительные унаследованные члены
- 1 открытый слот унаследован от QObject
- 1 сигнал унаследован от QValidator
- 2 сигнала унаследованы от QObject
- 1 открытая переменная унаследована от QObject
- 10 статические открытые члены унаследованы от QObject
- 9 защищённые функции унаследованы от QObject
- 2 защищённые переменные унаследованы от QObject
Подробное описание
Класс QRegExpValidator используется для проверки строки на соответствие регулярному выражению.
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) |
Документация по членам-функциям
QRegExpValidator::QRegExpValidator(QObject *parent = nullptr)
Конструктор валидатора с объектом-родителем, принимающим любую строку (включая пустую) как корректную.
QRegExpValidator::QRegExpValidator(const QRegExp &rx, QObject *parent = nullptr)
Конструктор валидатора с объектом-родителем, принимающим все строки, соответствующие регулярному выражению rx.
Сопоставление выполняется со всей строкой; например, если regexp равен [A-Fa-f0-9]+, он будет обрабатываться как ^[A-Fa-f0-9]+$.
[virtual] QRegExpValidator::~QRegExpValidator()
Удаляет валидатор.
[override virtual] QValidator::State QRegExpValidator::validate(QString &input, int &pos) const
Переопределяет QValidator::validate().
Возвращает Приемлемый, если 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/archives/qt-5.11/qregexpvalidator.html