QLineEdit doubleValidator 以点开头
QLineEdit doubleValidator starting with point
我有一个带有 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);
不幸的是,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
这更具可扩展性,允许您使用基本的正则表达式知识将其抽象为任何条件。
我有一个带有 QLineEdit 的 UI,它在 QDoubleValidator 的帮助下只接受 float/double 值。 如果我输入一个前导数字,它只接受值:0.234。但我更希望能够直接输入值而无需像 .234 这样的前导数字。不幸的是,QDoubleValidator 不接受前导点。有什么方法可以在验证器的帮助下存档我的目标,还是我必须自己检查每个输入的字符?我在 Windows10.
上使用 Qt 5.9.1QDoubleValidator* 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
这更具可扩展性,允许您使用基本的正则表达式知识将其抽象为任何条件。