Класс QRegularExpressionValidator
Класс QRegularExpressionValidator используется для проверки строки по регулярному выражению. Подробнее...
| Заголовок: | #include <QRegularExpressionValidator> |
| CMake: | find_package(Qt6 COMPONENTS Gui REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
| С момента: | Qt 5.1 |
| Наследуется от: | QValidator |
Свойства
- regularExpression : QRegularExpression
Открытые функции
| QRegularExpressionValidator(const QRegularExpression &re, QObject *parent = nullptr) | |
| QRegularExpressionValidator(QObject *parent = nullptr) | |
| virtual | ~QRegularExpressionValidator() |
| QRegularExpression | regularExpression() const |
Переопределённые открытые функции
| virtual QValidator::State | validate(QString &input, int &pos) const override |
Открытые слоты
| void | setRegularExpression(const QRegularExpression &re) |
Сигналы
| void | regularExpressionChanged(const QRegularExpression &re) |
Подробное описание
QRegularExpressionValidator использует регулярное выражение (regexp) для определения, является ли входная строка Приемлемой, Промежуточной или Недействительной. Регулярное выражение может быть задано при создании QRegularExpressionValidator или позже.
Если регулярное выражение частично соответствует строке, результат считается Промежуточным. Например, "" и "A" являются Промежуточными для регулярного выражения [A-Z][0-9] (в то время как "_" было бы Недействительным).
QRegularExpressionValidator автоматически обрамляет регулярное выражение якорями \\A и \\z; другими словами, он всегда пытается выполнить точное совпадение.
Пример использования:
// regexp: optional '-' followed by between 1 and 3 digits
QRegularExpression rx("-?\\d{1,3}");
QValidator *validator = new QRegularExpressionValidator(rx, this);
QLineEdit *edit = new QLineEdit(this);
edit->setValidator(validator); Ниже приведены некоторые примеры валидаторов. На практике они обычно ассоциируются с виджетом, как показано в примере выше.
// integers 1 to 9999
QRegularExpression re("[1-9]\\d{0,3}");
// the validator treats the regexp as "^[1-9]\\d{0,3}$"
QRegularExpressionValidator v(re, 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
re.setPattern("\\S+"); // one or more non-whitespace characters
v.setRegularExpression(re);
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
re.setPattern("[A-C]\\d{5}[W-Z]");
v.setRegularExpression(re);
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
re.setPattern("read\\S?me(\\.(txt|asc|1st))?");
re.setPatternOptions(QRegularExpression::CaseInsensitiveOption);
v.setRegularExpression(re);
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 См. также QRegularExpression, QIntValidator и QDoubleValidator.
Документация по свойствам
regularExpression : QRegularExpression
Это свойство хранит регулярное выражение, используемое для валидации
По умолчанию это свойство содержит регулярное выражение с пустым шаблоном (которое, следовательно, соответствует любой строке).
Функции доступа:
| QRegularExpression | regularExpression() const |
| void | setRegularExpression(const QRegularExpression &re) |
Сигнал уведомления:
| void | regularExpressionChanged(const QRegularExpression &re) |
Документация по функциям-членам
QRegularExpressionValidator::QRegularExpressionValidator(const QRegularExpression &re, QObject *parent = nullptr)
Конструирует валидатор с объектом parent, который принимает все строки, соответствующие регулярному выражению re.
QRegularExpressionValidator::QRegularExpressionValidator(QObject *parent = nullptr)
Конструирует валидатор с объектом parent, который принимает любую строку (включая пустую) как допустимую.
[virtual] QRegularExpressionValidator::~QRegularExpressionValidator()
Удаляет валидатор.
[override virtual] QValidator::State QRegularExpressionValidator::validate(QString &input, int &pos) const
Переопределяет: QValidator::validate(QString &input, int &pos) const.
Возвращает Приемлемый, если input соответствует регулярному выражению для этого валидатора, Промежуточный, если совпадение частичное (т. е. может быть допустимым соответствием, если добавляются дополнительные допустимые символы), и Недействительный, если input не соответствует.
В случае, если input не соответствует, параметр pos устанавливается в длину параметра input; в противном случае он не изменяется.
Например, если регулярное выражение \w\d\d (символ слова, цифра, цифра), то "A57" является Приемлемым, "E5" является Промежуточным, а "+9" является Недействительным.
См. также QRegularExpression::match().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qregularexpressionvalidator.html