如何将焦点从 QML 表单中的一个控件移至下一个控件?
默认情况下,它与 Tab
按钮一起使用,但我需要将其更改为 Enter
。
所有控件均按 2 列的 Gridlayout 进行排序。
最佳答案
我定义了一个新组件,TextFieldMoveOnReturn.qml
import QtQuick 2.0
import QtQuick.Controls 1.1
TextField {
Keys.onReturnPressed: nextItemInFocusChain().forceActiveFocus()
}
如果您使用这个而不是 TextField,您将获得所需的行为
编辑更好的解决方案:定义一个新组件GridLayoutNextOnReturn.qml
import QtQuick 2.0
import QtQuick.Layouts 1.1
GridLayout {
Keys.onReturnPressed: {
for (var i = 0; i < children.length; ++i)
if (children[i].focus) {
children[i].nextItemInFocusChain().forceActiveFocus()
break
}
}
}
并在内部使用普通的 TextField - 就像一个魅力
关于qt - QML:移至表单中的下一个控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24624423/