一、Delegate简介
每个代理都可以访问许多附加的属性,其中一些来自数据模型,另一些来自视图。
从模型中(Model):属性将每个项目的数据传递给 delegate。
从视图中(View):属性将状态信息传递给 elegate。
从视图附加的最常用属性是 ListView.isCurrentItem 和 ListView.view。第一个是布尔值,指示项是否为当前项,而后面的是对实际视图的只读引用。
二、演示代码(以 ListView为例)
1. Main.qml
import QtQuick
Rectangle{
width: 120; height: 300
gradient: Gradient{
GradientStop{ position: 0.0; color: "#f6f6f6" }
GradientStop{ position: 1.0; color: "#d7d7d7" }
}
ListView{
anchors.fill: parent
anchors.margins: 20
focus: true
clip: true
spacing: 5
model: 100
delegate: numberDelegate
}
Component{
id: numberDelegate
Rectangle{
required property int index
id: wrapper
width: ListView.view.width //链式只读到宽度值
height: 40
color: ListView.isCurrentItem ? "lightblue" : "lightgreen" //如果是状态值,可以直接通过 ListView. 去拿到
border.color: Qt.lighter("lightblue", 0.8)
Text {
id: text
text: wrapper.index
anchors.centerIn: parent
font.pixelSize: 12
}
}
}
}