Qt提供了QDoubleValidator来进行浮点数校验,但是它同样存在限定范围无效的问题,详见:Qt之彻底解决QSpinBox限定范围无效的问题
因此我们要子类化QDoubleValidator,并重写其中的validate方法,最后调用QLineEdit的setValidator方法,并将这个子类当做参数传入。
QHDoubleValidator.h
#ifndef QHDOUBLEVALIDATOR_H
#define QHDOUBLEVALIDATOR_H#include <QDoubleValidator>
class QHDoubleValidator : public QDoubleValidator
{
public:explicit QHDoubleValidator(QObject *parent = nullptr);QValidator::State validate(QString &input, int &pos) const override;
};#endif // QHDOUBLEVALIDATOR_H
QHDoubleValidator.cpp
#include "QHDoubleValidator.h"#include <QDebug>QHDoubleValidator::QHDoubleValidator(QObject *parent):QDoubleValidator(parent)
{}QValid