Qt Quick Controls 2 TextArea `tabChangesFocus`,如何使用 Tab 键改变焦点,而不是键入 Tab 字符

Qt Quick Controls 2 TextArea `tabChangesFocus`, how to use Tab key to change focus, not type Tab character

来自 Qt Quick Controls 1.x (http://doc.qt.io/qt-5/qml-qtquick-controls-textarea.html) 的

QML TextArea 有一个名为 tabChangesFocus 的 属性,可以将其设置为切换行为两个可能操作之间的 Tab 键:

快速控制 TextArea 中似乎不存在此 属性 2.x (https://doc.qt.io/qt-5/qml-qtquick-controls2-textarea.html)。

默认是 true 行为,但我想要 false 行为(焦点改变)。

有谁知道在 Quick Controls 2 中实现相同效果的简单方法吗?

这在将来可能会更方便,但您可以使用 QML KeyNavigation:

设置标签导航
import QtQuick 2.9
import QtQuick.Controls 2.2

ApplicationWindow {
    id: window
    width: 300
    height: 300
    visible: true

    Column {
        spacing: 20

        TextArea {
            id: textArea1
            focus: true
            text: "TextArea1"

            KeyNavigation.tab: textArea2
            KeyNavigation.backtab: textArea2
            KeyNavigation.priority: KeyNavigation.BeforeItem
        }

        TextArea {
            id: textArea2
            text: "TextArea2"

            KeyNavigation.tab: textArea1
            KeyNavigation.backtab: textArea1
            KeyNavigation.priority: KeyNavigation.BeforeItem
        }
    }
}

另一种方法是使用Item::nextItemInFocusChain()。这样,您就不需要知道焦点链中的下一项:

import QtQuick 2.9
import QtQuick.Controls 2.2

ApplicationWindow {
    id: window
    width: 300
    height: 300
    visible: true

    Column {
        spacing: 20

        TextArea {
            id: textArea1
            focus: true
            text: "TextArea1"

            Keys.onTabPressed: nextItemInFocusChain().forceActiveFocus(Qt.TabFocusReason)
        }

        TextArea {
            id: textArea2
            text: "TextArea2"
            objectName: text

            Keys.onTabPressed: nextItemInFocusChain().forceActiveFocus(Qt.TabFocusReason)
        }
    }
}