QML ListView当前项目不会因击键或鼠标而改变

Nat*_*son 1 qt qml

我有一个非常简单的ListView.

ListView {
    id: logListView
    anchors.fill: parent
    model: LogEntryListModel

    delegate:
        Text {
        text: "Log Item: " + timestamp + ", " + verb
    }
    highlight: Rectangle { color: "lightsteelblue"; radius: 5 }
    focus: true
    clip: true
}
Run Code Online (Sandbox Code Playgroud)

它显示模型正常并突出显示第一项.当我点击另一个项目时,当我使用箭头键时,它不会移动突出显示.我知道如何通过添加事件处理程序手动控制突出显示的项目,但我在文档中看到自动处理selectedItem的引用.我在想:

QML是否提供所选项目突出显示的自动更改?打开它需要添加什么?

Mit*_*tch 5

键盘处理自动完成:

import QtQuick 2.0
import QtQuick.Controls 1.1

Rectangle {
    width: 400
    height: 400

    ListView {
        id: logListView
        anchors.fill: parent
        model: 10

        delegate: Text {
            text: "Log Item: " + modelData
        }
        highlight: Rectangle { 
            color: "lightsteelblue"; 
            radius: 5
        }
        focus: true
        clip: true
    }
}
Run Code Online (Sandbox Code Playgroud)

如果使用向上和向下箭头键没有为您更改所选项目,使用上面的代码,那么这是一个错误.

但是,默认情况下不使用鼠标来选择项目; 只有轻弹/拖动列表.但是,添加很容易:

import QtQuick 2.0
import QtQuick.Controls 1.1

Rectangle {
    width: 400
    height: 400

    ListView {
        id: logListView
        anchors.fill: parent
        model: 10

        delegate: Text {
            text: "Log Item: " + modelData

            MouseArea {
                anchors.fill: parent
                onClicked: logListView.currentIndex = index
            }
        }
        highlight: Rectangle {
            color: "lightsteelblue";
            radius: 5
        }
        focus: true
        clip: true
    }
}
Run Code Online (Sandbox Code Playgroud)