qt 正则表达式只能输入整数 例如-100 100
时间: 2025-06-15 07:23:52 浏览: 16
在Qt中,如果你想限制正则表达式的输入只接受整数,并且范围是负数到正数,你可以创建一个自定义的验证函数来实现这个需求。下面是一个简单的示例:
```cpp
#include <QLineEdit>
#include <QRegExpValidator>
class IntegerRangeValidator : public QRegExpValidator {
public:
explicit IntegerRangeValidator(int min = -std::numeric_limits<int>::max(), int max = std::numeric_limits<int>::max(), QObject *parent = nullptr)
: QRegExpValidator(QStringLiteral("\\d*"), parent) {
setPatternSyntax(QRegExp::FixedString);
setBottom(min);
setTop(max);
}
private:
void setBottom(int bottom) {
QString lowerBound = QString::number(bottom);
if (bottom > 0) {
pattern.prepend(lowerBound + ".*");
} else {
pattern.prepend("^(-?)*(" + lowerBound + ")");
}
}
void setTop(int top) {
QString upperBound = QString::number(top);
pattern.append("(?" + upperBound + "$)");
}
};
// 使用自定义验证器
QLineEdit *lineEdit = new QLineEdit(this);
IntegerRangeValidator validator(0, 100); // 设置允许输入的范围
lineEdit->setValidator(&validator);
// 监听输入变化,实时校验
QObject::connect(lineEdit, &QLineEdit::textChanged, &validator, &QRegExpValidator::validate);
```
在这个例子中,`IntegerRangeValidator`继承了`QRegExpValidator`,并设置了正则表达式模式来匹配整数。设置`setBottom`和`setTop`方法来指定范围。然后在`QLineEdit`上应用这个验证器。
阅读全文
相关推荐


















