首页 文章

QLineEdit doubleValidator以point开头

提问于
浏览
0

我有一个带有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

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

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

相关问题