qt - QML:移至表单中的下一个控件

标签 qt qml qtquick2

如何将焦点从 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/

相关文章:

android - 为 Android 构建 QtLocation 模块

qt - Qt中的dumpbin等价物

qml - 在 QML 中获取 $HOME 和/或用户名

qt - QQuickWidget抓取图像

c++ - 是否有可能从内部(它们是嵌套的)到达外部 QML Repeater 的索引?

c++ - qt 通过将对象移动到

c++ - 在 QDialog::exec() 之后调用 QApplication::exec()

c++ - 我应该使用 QVariant 还是 MyCustomType* 将对象从 Qml 传递到 C++?

qt - 使用 QML 保存窗口状态

c++ - QML 中 ListView 的问题