如何在QML中的文本框之间进行标签导航?

时间:2018-10-09 14:43:44

标签: qt qml qt5 qtquick2 qt-quick

我有一个带有边框和TextInput(基本上是一个标准的文本框)的QML组件(或类似的东西,只是一个文件,其根目录为root)。

import QtQuick 2.7

Item {
    id: textBox
    clip: true

    property alias  inputText:       inputText.text
    property alias  mode:            inputText.echoMode
    property color  borderColor:     "gray"
    property int    borderWidth:     1

    Rectangle {
        id: rectInput
        anchors.fill: parent
        border.color: borderColor
        border.width: borderWidth
        radius:       4
    }

    TextInput {
        id: inputText
        anchors.fill:       parent
        anchors.leftMargin: 3
        verticalAlignment:  Text.AlignVCenter
        selectByMouse:      true
    }
}

我有一个包含两个组成部分的表格。

GridLayout {
    anchors.horizontalCenter: parent.horizontalCenter
    anchors.verticalCenter: parent.verticalCenter
    width: 400
    columns: 2
    rowSpacing: 10

    Text {
        id: textName
        clip: true
        text: "Name: "
    }
    TextBox {
        id: tboxName
        Layout.fillWidth: true
        height: 30
        KeyNavigation.tab: tboxPassword
    }

    Text {
        id: textPassword
        clip:  true
        text: "Password: "
    }
    TextBox {
        id: tboxPassword
        Layout.fillWidth: true
        height: 30
        mode: TextInput.Password
    }

    ...
}

如何在它们之间进行标签导航?我尝试添加KeyNavigation.tab,但没有效果。

请问QML / Qt Quick真的在可交互组件之间没有默认的选项卡处理吗?因此,我们必须始终手动指定选项卡吗?

1 个答案:

答案 0 :(得分:1)

问题是获得焦点的对象是TextBox,这是一个不知道如何处理它的项目,因此我们必须激活activeFocusOnTab属性并使用{{1 }}:

onActiveFocusChanged