QML下ListView里如何访问一个代表(delegate)下的数据

2 篇文章 0 订阅
2 篇文章 0 订阅

在谷歌上搜How to access item in ListView delegate之后,看了好几篇文章,做了许些实验后,发现在这样的可以访问。以下贴出代码

import QtQuick 1.1

Rectangle {
    width: 360
    height: 360

    MouseArea {
        anchors.fill: parent
        onClicked: {
            Qt.quit();
        }
    }
    Rectangle {
        width: 180; height: 200
        ListModel {
            id: id_model
            ListElement {
                name: "Bill Smith"
                number: "555 3264"
                index: 0
            }
            ListElement {
                name: "John Brown"
                number: "555 8426"
                index: 1
            }
            ListElement {
                name: "Sam Wise"
                number: "555 0473"
                index: 2
            }
        }

        ListView {
            id: view
            anchors.fill: parent
            model: id_model
            delegate: Component {
                Item {
                    property variant mymodel: model
                    width: 180; height: 40
                    scale: (view.currentIndex == index) ? 1.2 : 1
                    Column {
                        Text { text: '<b>Name:</b> ' + name }
                        Text { text: '<b>Number:</b> ' + number }
                    }
                    MouseArea {
                        anchors.fill: parent
                        onClicked: {
                            parent.ListView.view.currentIndex = index
                        }
                    }
                }
            }
            onCurrentIndexChanged: {
                console.log(view.currentIndex)
                console.log(view.currentItem.mymodel.name)
            }

            highlight: Rectangle { color: "lightsteelblue"; radius: 5 }
            focus: true
        }
    }
}

主要就是,在delegate下的item里声明一个variant mymodel。初始化用ListView下面的model。

然后就可以在任何位置,访问delegate里面的数据了。

我一般是会访问currentItem下的数据。

onCurrentIndexChanged函数下面,只是一个demo。你也可以在ListView外新建一个MouseArea,来测试。


好了,到此为止。完了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值