QLineEdit doubleValidator以point开头

问题描述 投票:0回答:1

我有一个带有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);
c++ qt qlineedit
1个回答
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

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

© www.soinside.com 2019 - 2024. All rights reserved.