qlineedit DoubleValidator从点开始

QLineEdit doubleValidator starting with point

本文关键字:开始 DoubleValidator qlineedit      更新时间:2023-10-16

i有一个带有qlineedit的UI,该UI仅在QDoubleValidator的帮助下接受float/double值。它仅在我输入类似于:0.234的领先数字时接受值。但是,我希望能够直接输入值,而无需像.234这样的领先数字。不幸的是,QDoubleValidator不接受指导点。有什么方法可以在验证者的帮助下对我的目标进行存档,还是我必须自己检查每个输入的角色?我在Windows10上使用QT 5.9.1。

QDoubleValidator* doubleValidator = new QDoubleValidator();
QLineEdit* lineEdit = new QLineEdit(frame);
lineEdit->setValidator(doubleValidator);
vbox->addWidget(lineEdit);

不幸的是, QDoubleValidator非常有限,但是您可以使用 QRegExpValidator用送纸条来获取想要的数字,具体取决于您期望的符号。

// non-scientific floating-point numbers
QRegExp rx("[-+]?[0-9]*\.?[0-9]+");
QRegExpValidator v(rx, 0);
QString s;
s = ".123";
v.validate(s, 0);    // Returns Acceptable

这是可以扩展得多的,并允许您使用基本的正则表达知识将其抽象为任何条件。