【问题标题】:How to set focus to TextField inside ListView delegate?如何将焦点设置到 ListView 委托内的 TextField?
【发布时间】:2019-11-24 00:41:40
【问题描述】:

我有 ListView,里面有一些文本输入字段:

Window {
    visible: true

    ListModel {
        id: textModel
        ListElement {
            text: "Bill Smith"
        }
        ListElement {
            text: "John Brown"
        }
        ListElement {
            text: "Sam Wise"
        }
    }

    ListView {
        width: 180; height: 200
        focus: true

        model: textModel
        delegate: RowLayout{
            id: layout
            Label {
                text: model.text
            }
            TextField {
                text: model.text
            }
        }
    }
}

我想将输入焦点设置到列表中的第一个 TextField。我怎样才能做到这一点?如果我在 ListView 中添加 focus: true 则无济于事。

【问题讨论】:

    标签: qt qml qt5


    【解决方案1】:

    您必须使用 ListView.isCurrentItem 属性激活 TextField 的焦点:

    ListView {
        id: view
        width: 180; height: 200
        focus: true
        model: textModel
        delegate: RowLayout{
            id: layout
            Label {
                text: model.text
            }
            TextField {
                focus: layout.ListView.isCurrentItem
                text: model.text
            }
        }
        // Component.onCompleted: view.currentIndex = 0
    }
    

    【讨论】:

    • 谢谢,这个解决方案有效。我尝试其他解决方案: focus: model.index == 0 并且它不起作用。我不明白为什么。
    猜你喜欢
    • 1970-01-01
    • 2016-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多