QLineEdit doubleValidator以point开头

时间:2017-12-26 18:40:41

标签: c++ qt qlineedit

我有一个带有QLineEdit的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);

1 个答案:

答案 0 :(得分:0)

不幸的是,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

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