视图将属性附加到委托。对于ListView,委托可以访问ListView.view.width
和ListView.isCurrentItem
属性:
Rectangle {
width: ListView.view.width
height: 40
color: ListView.isCurrentItem ? "gray" : "lightGray"
Text {
anchors.centerIn: parent
text: index
}
}
通过类型名称引用View,似乎委托失去了它的通用性。
如果我想在GridView中使用相同的委托怎么办?
答案 0 :(得分:2)
您应该从代理中创建一个Component,并在实例化期间设置property isCurrentItem
。换句话说,创建新的qml文件并为其命名,例如“Delegate.qml
”并添加property bool isCurrentItem
:
import QtQuick 2.4
Rectangle {
property bool isCurrentItem: false
width: parent.width
height: 20
color: isCurrentItem ? "gray" : "lightGray"
Text {
anchors.centerIn: parent
text: index
}
}
你可以在ListView中使用它,如:
ListView {
model: 10
width: 40
height: 200
delegate: Delegate {
isCurrentItem: ListView.isCurrentItem
}
}
,类似于GridView:
GridView {
model: 10
width: 40
height: 200
delegate: Delegate {
isCurrentItem: ListView.isCurrentItem
}
}
您可以采用相同的方式提供width
ListView
个GridView
/ parent.width
代理,但在这种情况下,{{1}}也可以按照您想要的方式运行。