在 ScrollView 中编辑 TextInput
Editing a TextInput in a ScrollView
我的 QML 有问题。我想根据操作编辑 TextInput
,将 focus
属性设置为 true
。它在 TextInput
位于 Rectangle
中但不在 ScrollView
中时有效。
这是一个例子:
Item {
id: main
width: 640
height: 480
ScrollView{
id: scrollView
height: parent.height/2
width: parent.width
Rectangle{
border.color: "black"
border.width: 1
anchors.centerIn: parent
height: 25
width: 200
TextInput{
id: ti1
anchors.fill: parent
verticalAlignment: TextInput.AlignVCenter
horizontalAlignment: TextInput.AlignHCenter
}
}
}
Rectangle{
y: height
height: parent.height/2
width: parent.width
Rectangle{
border.color: "black"
border.width: 1
anchors.centerIn: parent
height: 25
width: 200
TextInput{
id: ti2
anchors.fill: parent
verticalAlignment: TextInput.AlignVCenter
horizontalAlignment: TextInput.AlignHCenter
}
}
}
MouseArea{
anchors.fill: parent
onClicked: {
if (mouseY < parent.height/2){
ti2.focus = false
ti1.focus = true
}else{
ti1.focus = false
ti2.focus = true
}
}
}
}
当我点击 window 的下半部分时,TextInput
ti2 是可编辑的。但是当我点击上半部分的时候,ti1就没有了
有人知道吗?行为与 TextEdit
.
相同
谢谢。
我认为是因为:
"Only one Item can be a direct child of the ScrollView and the child is implicitly anchored to fill the scroll view."。
发件人:http://doc.qt.io/qt-5/qml-qtquick-controls-scrollview.html
可能组件树在 ScrollView 中不可用。
但是如果你使用:
ti1.forceActiveFocus();
而不是:
ti1.focus = true
有效。
我的 QML 有问题。我想根据操作编辑 TextInput
,将 focus
属性设置为 true
。它在 TextInput
位于 Rectangle
中但不在 ScrollView
中时有效。
这是一个例子:
Item {
id: main
width: 640
height: 480
ScrollView{
id: scrollView
height: parent.height/2
width: parent.width
Rectangle{
border.color: "black"
border.width: 1
anchors.centerIn: parent
height: 25
width: 200
TextInput{
id: ti1
anchors.fill: parent
verticalAlignment: TextInput.AlignVCenter
horizontalAlignment: TextInput.AlignHCenter
}
}
}
Rectangle{
y: height
height: parent.height/2
width: parent.width
Rectangle{
border.color: "black"
border.width: 1
anchors.centerIn: parent
height: 25
width: 200
TextInput{
id: ti2
anchors.fill: parent
verticalAlignment: TextInput.AlignVCenter
horizontalAlignment: TextInput.AlignHCenter
}
}
}
MouseArea{
anchors.fill: parent
onClicked: {
if (mouseY < parent.height/2){
ti2.focus = false
ti1.focus = true
}else{
ti1.focus = false
ti2.focus = true
}
}
}
}
当我点击 window 的下半部分时,TextInput
ti2 是可编辑的。但是当我点击上半部分的时候,ti1就没有了
有人知道吗?行为与 TextEdit
.
谢谢。
我认为是因为: "Only one Item can be a direct child of the ScrollView and the child is implicitly anchored to fill the scroll view."。
发件人:http://doc.qt.io/qt-5/qml-qtquick-controls-scrollview.html
可能组件树在 ScrollView 中不可用。
但是如果你使用:
ti1.forceActiveFocus();
而不是:
ti1.focus = true
有效。