QDoubleValidator完善版
使⽤过QDoubleValidator的同学都知道,QDoubleValidator在Qt中实现并不完善,导致使⽤时存在bug,但是幸好,Qt提供了validate的虚函数,让我们可以重写它,以下是我实现的⼀个QDoubleValidator版本,暂时没有发现什么问题。
炸莲藕的做法大全//***********************QDoubleValidator.h*************************//
#ifndef QTVEDITORDOUBLEVALIDATOR_H
#define QTVEDITORDOUBLEVALIDATOR_H
#include<QDoubleValidator>
class QtVEditorDoubleValidator :public QDoubleValidator
{伤心绝望的网名
public:
explicit QtVEditorDoubleValidator(QObject * parent = Q_NULLPTR);
QtVEditorDoubleValidator(double bottom,double top,int decimals, QObject *parent = Q_NULLPTR);
QValidator::State validate(QString &str,int&i)const;
面面俱到的意思};
#endif// QTVEDITORDOUBLEVALIDATOR_H
//***********************QDoubleValidator.cpp*************************//
#include"QtVEditorDoubleValidator.h"
#include<QString>
QtVEditorDoubleValidator::QtVEditorDoubleValidator(QObject *parent)
:QDoubleValidator(parent)
{
}
QtVEditorDoubleValidator::QtVEditorDoubleValidator(double bottom,double top,int decimals, QObject *parent)
:QDoubleValidator(bottom,top,decimals,parent)
{
}
QValidator::State QtVEditorDoubleValidator::validate(QString &str,int&i)const
{jehovah
if(str.isEmpty())
return QValidator::Intermediate;
if(bottom()>=0&& str.startsWith('-'))
人参鹿茸泡酒配方return Invalid;
int dotPos = str.indexOf(".");
if(dotPos >0&& str.right(str.length()- dotPos -1).length()>decimals())//判断⼩数点位数
return Invalid;
bool ok =fal;
double val = Double(&ok);建设工程项目
if(!ok)
return(bottom()<0&&!pare("-"))? Intermediate : Invalid;
if(val <=top()&& val >=bottom())胡萝卜汁的做法
return Acceptable;
if(val >=0)
return(val >top()&&-val <bottom())? Invalid : Intermediate;
el
return(val <bottom())? Invalid : Intermediate;
优秀员工发言稿
}
附记:
偶然翻了下⽹上的其他博客,发现有⼀种解决⽅式如下:
speedValidator.tRange(0,2000,2);
speedValidator.tNotation(QDoubleValidator::StandardNotation); ui.tSpeedEdt->tValidator(&speedValidator);
暂未验证,貌似有的同学说有效,有的说⽆效,聊以附记。