我有一个带有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);
答案 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
这是更加可扩展的,并允许您使用基本的正则表达式知识将其抽象为任何条件。