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

Mar*_* Ch 1 qml qtquickcontrols2

Qt Quick Controls 1.x 中的QML TextArea( http://doc.qt.io/qt-5/qml-qtquick-controls-textarea.html ) 有一个名为 的属性tabChangesFocus,可以设置该属性来切换 Tab 键的行为两个可能的动作之间:

  • true:在其中输入制表符TextArea
  • false:将焦点移至选项卡链中的下一项

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

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

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

jpn*_*rmi 5

另一种方法是使用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)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)