qt - QML ListView 当前项目不随击键或鼠标改变

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

它很好地显示了模型并突出显示了第一项。当我单击另一个项目或使用箭头键时,它不会移动突出显示。我知道如何通过添加事件处理程序来手动控制突出显示的项目,但我在文档中看到了对 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
    }
}

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

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

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

关于qt - QML ListView 当前项目不随击键或鼠标改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23916510/

相关文章:

windows - 如何在 Windows 上打包使用 CMake 构建的 Qt 程序?

javascript - 如何从 json 文件中选择并打印值

android - Qt 5.1 : QMultimedia 5. 0 in android for Camera

qt - QML QQuickText : Cannot anchor to an item that isn't a parent or sibling

javascript - 从c++访问qml元素id

qt - Qt 和 JavaFX 等硬件加速工具包如何实现高质量字体渲染?

javascript - QT-Quick 中的 Javascript 中的 openDatabaseSync

python - 使用 QWebView 显示 PDF 文件

c++ - Qt模型-在单独的线程中查看数据和模型

qt - 从 Qt 5.3 代码中的任何位置获取 QML 根对象