我在IntValidator
内有一些TextInput
s,它们都表现良好,除了一个。一个行为不端是唯一一个将bottom
属性设置为大于零的东西。使用下面的代码(Qt 5.2.0)很容易产生问题:
import QtQuick 2.1
Rectangle
{
id: mainwindow
objectName: "mainwindow"
width: 1024
height: 768
TextInput
{
id: testtextinput
objectName: "testtextinput"
text: "170"
font.pixelSize: 36
x: 100
y: 200
width: 200
height: 200
property size range: Qt.size(160, 180)
validator: IntValidator
{
id: rangevalidator
objectName: testtextinput.objectName + "_rangevalidator"
bottom: testtextinput.range.width
top: testtextinput.range.height
Component.onCompleted:
{
console.log("Component.onCompleted objectName: " + objectName + " bottom: " + bottom + " top: " + top)
}
}
onAccepted:
{
text = "accepted"
}
}
Text
{
id: testisacceptable
font.pixelSize: 36
text: testtextinput.acceptableInput
anchors.top: testtextinput.bottom
anchors.left: testtextinput.left
anchors.right: testtextinput.right
height: 200
}
}
验证器的范围设置为[ 160 , 180 ],因此,如果我要输入 181 ,我只需输入 18 即可。但是,如果我要输入 159 , TextInput 可以让我写下整个数字,告诉我这个数字不会被接受设置为 false acceptableInput
属性,但是当我按回车键时,onAccepted()
插槽执行没有问题。关于这里发生了什么的任何想法?一个错误?