如何在QML中的50个文本字段之间切换焦点?

时间:2018-12-05 13:31:49

标签: javascript qt qml

当用户按下Enter键时,我想将焦点从一个字段切换到下一个字段:我将如何处理?

项目按网格排列,如下所示:

Grid {
  x: 5
  y: 3
  rows: 5
  columns: 20
  spacing: 10

  Repeater { 
    model: 50

    TextField { 
      width: 28
      height: 50
      color: "green"
      text: "0000"
      font.pixelSize: 12

      validator: IntValidator {
        bottom: -256
        top: 256
      }
    }
  }
}

2 个答案:

答案 0 :(得分:1)

您可以通过使用Key附加属性来实现:

Grid {
    x: 5
    y: 3
    rows: 5
    columns: 20
    spacing: 10

    Repeater {
        id: rpt
        model: 50

        TextField {
            width: 28
            height: 50
            color: "green"
            text: "0000"
            font.pixelSize: 12

            Keys.onEnterPressed: rpt.itemAt(index + 1).focus = true

            validator: IntValidator {
                bottom: -256
                top: 256
            }
        }
    }
}

答案 1 :(得分:1)

由于TextField继承自Item,因此您可以使用nextItemInFocusChain()使用现有的焦点链。 只需将以下行添加到TextField

Keys.onEnterPressed: nextItemInFocusChain().forceActiveFocus()