import QtQuick 2.9 import QtQuick.Window 2.2 import QtQuick.Controls 1.4 Window { visible: true width: 640 height: 480 title: qsTr("Hello World") TextField { id:textField width: 130 height: 50 Button { anchors.right: parent.right text: "lose Focus" }
为什么单击按钮时textField不会失去焦点?如何实现点击TextField外的区域使TextField失去焦点?
发布于 2019-03-11 20:32:47
使用现有代码的最简单方法是在单击按钮时在另一项上执行 force active focus :
Button { anchors.right: parent.right text: "lose Focus" onClicked: forceActiveFocus() }
要使 TextField 在单击外部区域时失去焦点,可以使用 MouseArea 执行类似的操作
TextField
MouseArea
import QtQuick 2.9 import QtQuick.Window 2.2 import QtQuick.Controls 1.4 Window { visible: true width: 640 height: 480 title: qsTr("Hello World") MouseArea { anchors.fill: parent onClicked: forceActiveFocus() TextField { id: textField width: 130 height: 50 }
此项目需要低于场景中的其他项目(即具有较低的Z值)。您还可以将其设置为其他项的父项,以实现以下目的:
如果您使用的是Qt Quick Controls 2,则可以在例如 Pane 上使用 focusPolicy 属性
Pane
focusPolicy
import QtQuick 2.7 import QtQuick.Controls 2.0 ApplicationWindow { visible: true width: 640 height: 480 title: qsTr("Hello World") Pane { anchors.fill: parent focusPolicy: Qt.ClickFocus