1、QRegExpValidator 用在QLineEdit上无效,必须使用 QRegularExpressionValidator
2、正则表达式网站
邮箱:
^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$
禁止逗号(英文)
^[^,]+$
封装了一个类支持强制大写
#pragma once
#include <QRegularExpressionValidator>
class TransValidator : public QRegularExpressionValidator
{
Q_OBJECT
public:
explicit TransValidator(QObject* parent = nullptr) : QRegularExpressionValidator(parent) {}
explicit TransValidator(const QString& rx, QObject* parent = nullptr) :QRegularExpressionValidator(QRegularExpression(rx), parent) {}
explicit TransValidator(const QRegularExpression& rx, QObject* parent = nullptr) :QRegularExpressionValidator(rx, parent) {}
virtual ~TransValidator() {}
QValidator::State validate(QString& input, int& pos) const override
{
if (mIsUpper)
{
input = input.toUpper();
}
else if (mIsLower)
{
input = input.toLower();
}
return QRegularExpressionValidator::validate(input, pos);
}
void SetUpper(bool b = true) { mIsUpper = b; };
void SetLower(bool b = true) { mIsLower = b; }
private:
bool mIsUpper = false;
bool mIsLower = false;
};