无法在StackView项目内的TextEdit中检索焦点

时间:2017-02-13 09:48:36

标签: qt qml

我不明白为什么它不能正常工作。我想在窗口弹出时将TextEdit焦点设置为true。只有在对其区域执行了单击后,TextEdit才能接收关键事件。

main.qml

ApplicationWindow {
    id:aplWin
    visible: true
    minimumWidth:  1280
    minimumHeight: 1024

    StackView {
        id: stackView
        anchors.fill: parent
        initialItem: SignInWin {}
    }
}

SignInWin.qml

Page {
    id: root
    width: parent.width + 500
    height: parent.height

    Rectangle {
        border.color: "black"
        y: 200
        width: 50
        height: 20
        z: 1
        TextEdit {
            anchors.fill: parent
            color: "black"
            focus: true
        }
    }
}

1 个答案:

答案 0 :(得分:1)

问题是那些:

焦点树中有多个图层。每个FocusScope可以有一个具有焦点的孩子。所以现在你有了:

StackView -> Page -> TextEdit

令我感到困惑的是,Page的行为就好像是FocusScope,但没有记录。

这意味着,除非TextEdit AND activeFocus,否则Page将不会StackView。但是activeFocus需要检索输入。

因此,您可以使用将遍历焦点层次结构的方法forceActiveFocus(),并为每个FocusScope请求焦点,或者将focus - 属性设置为{{ 1}}用于层次结构中的每个层。

true