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
执行类似的操作
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值)。您还可以将其设置为其他项的父项,以实现以下目的:
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
}
}
}
如果您使用的是Qt Quick Controls 2,则可以在例如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
}
TextField {
id: textField
width: 130
height: 50
}
}
https://stackoverflow.com/questions/55101332
复制相似问题