QML:转到下一个控件的形式

fol*_*bis 5 qt qml qtquick2

如何在QML表单中将焦点从一个控件移动到下一个控件?默认情况下它适用于Tab按钮,但我需要将其更改为Enter.所有控件都订购Gridlayout有2列.

Cap*_*liC 9

我已经定义了一个新组件TextFieldMoveOnReturn.qml

import QtQuick 2.0
import QtQuick.Controls 1.1

TextField {
    Keys.onReturnPressed:  nextItemInFocusChain().forceActiveFocus()
}
Run Code Online (Sandbox Code Playgroud)

如果您使用此文件而不是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
            }
    }
}
Run Code Online (Sandbox Code Playgroud)

并使用普通的TextField - 像魅力一样工作