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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt Quick Controls 2 TextArea`tabChangesFocus`,如何使用Tab键更改焦点,而不是键入Tab字符相关的知识,希望对你有一定的参考价值。

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

  • true:在TextArea中输入Tab字符
  • false:将焦点移动到选项卡链中的下一个项目

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

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

有没有人知道一种简单的方法来实现快速控制2的相同效果?

答案

另一种方法是使用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)
        }
    }
}
另一答案

这可能会在将来更方便,但您可以使用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
        }
    }
}

以上是关于Qt Quick Controls 2 TextArea`tabChangesFocus`,如何使用Tab键更改焦点,而不是键入Tab字符的主要内容,如果未能解决你的问题,请参考以下文章

Qt Quick Controls 2 启动画面

Qt Quick Controls 2 上 SpinBox 的后缀选项

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

QT开发(五十五)———Qt Quick Controls

Qt Quick.2 TextField 的操作系统编辑/粘贴菜单

如何设置Qt Quick Controls2的风格