QML RegExpValidator用于验证的最大字符串长度

时间:2015-11-09 17:15:41

标签: regex qt qml

我是QML和Qt Quick的新手,就在5天前我才知道他们。
我打算让一个RegExpValidator用于逗号分隔单词的TextInput,允许的总输入字符串长度为1-2500。

$("#amount<?php echo $row['empId']; ?>, #exp<?php echo $row['empId']; ?>, #unit_price<?php echo $row['empId']; ?>, #taxit<?php echo $row['empId']; ?>").on('keyup',function(event){
    var amount =  $("#amount<?php echo $row['empId']; ?>").val() - jQuery("#exp<?php echo $row['empId']; ?>").val();;
    var subtotal =   amount;
    var total = subtotal - (subtotal  * $("#tax<?php echo $row['empId']; ?>").val() / 100);
    var taxpaid = subtotal  * $("#tax<?php echo $row['empId']; ?>").val() / 100;
    $("#unit_price<?php echo $row['empId']; ?>").val(amount);
    $("#taxpaida<?php echo $row['empId']; ?>").val(taxpaid);
    $("#total<?php echo $row['empId']; ?>").val(total);
});

是我的RegExpValidator_example.qml文件,它不接受任何输入。
经过反复试验,我发现regExp长度的上限是1024 就是这样,

import QtQuick 2.2

Rectangle {
    width : 100
    height : 50

    Text {
        id : label
        text: "Enter words"
    }

    TextInput {
        anchors {
            topMargin : 5
            top : label.bottom
        }
        focus: true
        validator: RegExpValidator { regExp: /[a-zA-Z,]{1,2500}/ }
     }
}

有效,但

validator: RegExpValidator { regExp: /[a-zA-Z,]{1,1024}/ }

没有按&#39;吨。所以我找到了另一种方式:

validator: RegExpValidator { regExp: /[a-zA-Z,]{1,1025}/ }

我尝试在QML文档中搜索上限,但无济于事。我真的没找错,还是这个错误?

1 个答案:

答案 0 :(得分:2)

我遍及RegExpValidator的文档以及QRegExp的文档,这是它的C ++对应文件,换句话说就是在引擎盖下实例化的类。

正如你所说,没有任何限制的线索。

很好奇,我去查看source code,我发现实际上存在极限。设置为InftyRep并使用here(当然,如果我能够了解该文件中发生的情况)。奇怪的是,InftyRep实际设置为1025 here,并在<的检查中用于上述代码中。这也会确认您的建议,即最大接受长度为1024

那就是说,我强烈怀疑你是对的,因为限制确实存在,但没有正确记录。

注意:上面提到和链接的代码是Qt 5.5的代码,您可能会考虑在bugtracker上打开一个问题。