16,203
社区成员
发帖
与我相关
我的任务
分享
MyDoubleValidator * dv = new MyDoubleValidator(0);
dv->setNotation(QDoubleValidator::StandardNotation);
dv->setRange(2.0, 3.0, 2);
ui.lineEdit->setValidator(dv);
}
现在就可以完美限制了
class MyDoubleValidator : public QDoubleValidator
{
Q_OBJECT
public:
MyDoubleValidator(QObject *parent);
~MyDoubleValidator();
virtual QValidator::State validate(QString &input, int &pos) const;
};
#include "MyDoubleValidator.h"
MyDoubleValidator::MyDoubleValidator(QObject *parent)
: QDoubleValidator(parent)
{
}
MyDoubleValidator::~MyDoubleValidator()
{
}
QValidator:: State MyDoubleValidator::validate(QString & input, int & pos) const
{
if (input.isEmpty())
{
return QValidator::Intermediate;
}
bool OK = false;
double val = input.toDouble(&OK);
if (!OK)
{
return QValidator::Invalid;
}
int dotPos = input.indexOf(".");
if (dotPos > 0)
{
if (input.right(input.length() - dotPos - 1).length() > decimals())
{
return QValidator::Invalid;
}
}
if(val<bottom()|| val>top())
return QValidator::Invalid;
return QValidator::Acceptable;
}
QRegExp rx("^([7]\.[7-9])|([8]\.[0-8])");
QRegExpValidator *pReg = new QRegExpValidator(rx, this);
ui->lineEdit->setValidator(pReg);
void setMaximum(double max)
void setMinimum(double min)