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
}

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

QML提供自动更改选中的项目突出显示吗?我需要添加什么才能打开它?

键盘处理是自动完成的:

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
    }
}

如果使用上面的代码,使用向上和向下方向键不能改变选中的项目,那么这是一个bug。

默认情况下不处理使用鼠标选择项目;只有轻弹/拖拽列表。不过,它很容易添加:

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
    }
}

最新更新