我只是希望当我单击 ScrollView 时我的 TextField 失去焦点,但问题是 ScrollView 不接受使用 Qt.ClickFocus 的焦点。
import QtQuick
import QtQuick.Controls.Universal
ApplicationWindow {
visible: true
width: 600
height: 400
ScrollView {
anchors.fill: parent
focusPolicy: Qt.ClickFocus
TextField {
id: textField
implicitWidth: 400
implicitHeight: 50
}
}
}
我认为有一些东西干扰了点击事件,因为当我使用
focusPolicy: Qt.TabFocus
它工作得很好。
我使用的是Qt 6.5。这是一个可怕的错误吗?
我解决这个问题的唯一方法是使用窗格作为滚动视图的子项,并将焦点策略设置为 Qt.ClickFocus
import QtQuick
import QtQuick.Controls.Universal
ApplicationWindow {
visible: true
width: 600
height: 400
ScrollView {
id: scrollView
anchors.fill: parent
focusPolicy: Qt.ClickFocus
Pane {
width: scrollView.width
height: Math.max(scrollView.height, implicitHeight)
focusPolicy: Qt.ClickFocus
TextField {
id: textField
implicitWidth: 400
implicitHeight: 50
}
}
}
}
您还可以使用作为
Item
子级的隐藏 ScrollView
,并为 TapHandler
安装调用隐藏 ScrollView
forceActiveFocus()`的 Item'
:
ScrollView {
anchors.fill: parent
TextField {
id: textField
implicitWidth: 400
implicitHeight: 50
}
Item {
id: hiddenItem
visible: false
}
TapHandler {
onTapped: hiddenItem.forceActiveFocus()
}
}