from: http://bbs.csdn.net/topics/350177184
QIntValidator可以限制QLineEdit的输入范围,但是输入完成之后不会自动修正,需要对该基类进行继承补充fixup()函数的实现.
自定义的一个自带修正的DIntValidator类.
只要引用该头文件就可以正常使用了, dintvalidator.h定义如下.
#ifndef DINTVALIDATOR_H
#define DINTVALIDATOR_H
#include <QIntValidator>
class DIntValidator : public QIntValidator
{
Q_OBJECT
public:
explicit DIntValidator(QObject* parent = 0) : QIntValidator(parent){}
DIntValidator(int bottom, int top, QObject* parent) : QIntValidator(
bottom, top, parent){}
~DIntValidator() {}
virtual void setRange(int bottom, int top)
{
QIntValidator::setRange(bottom, top);
}
virtual State validate(QString &s, int &n) const
{
return QIntValidator::validate(s, n);
}
virtual void fixup(QString &s) const
{
s = QString("%1").arg(bottom());
}
};
#endif // DINTVALIDATOR_H