QIntValidator/QDoubleValidator 校验器限制QLineEdit的数值输入范围并自动修正
QIntValidator可以限制QLineEdit的输入范围,但是输入完成之后不会自动修正,显示的值仍为用户输入的值。
需要对该基类进行继承并补充fixup()函数的实现后才可以自动修正,自定义的一个自带修正的MyIntValidator类.
#include <QIntValidator>
class MyIntValidator : public QIntValidator
{
Q_OBJECT
public:
explicit MyIntValidator(QObject* parent = 0) : QIntValidator(parent) {}
explicit MyIntValidator(int bottom, int top, QObject* parent) : QIntValidator(
bottom, top, parent) {}
~MyIntValidator() {}
void fixup(QString &s) const override
{
s = QString("%1").arg(top()); // 输入值不在限制范围内时,使用最小值填充
}
};
在使用时,直接使用自定义的 MyIntValidator
类即可。
QDoubleValidator
自动修正的方法同理。