我是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文档中搜索上限,但无济于事。我真的没找错,还是这个错误?
答案 0 :(得分:2)
我遍及RegExpValidator
的文档以及QRegExp
的文档,这是它的C ++对应文件,换句话说就是在引擎盖下实例化的类。
正如你所说,没有任何限制的线索。
很好奇,我去查看source code,我发现实际上存在极限。设置为InftyRep
并使用here(当然,如果我能够了解该文件中发生的情况)。奇怪的是,InftyRep
实际设置为1025 here,并在<
的检查中用于上述代码中。这也会确认您的建议,即最大接受长度为1024
。
那就是说,我强烈怀疑你是对的,因为限制确实存在,但没有正确记录。
注意:上面提到和链接的代码是Qt 5.5的代码,您可能会考虑在bugtracker上打开一个问题。