CLi*_*own 1 qt qml qt-quick qt5 qtquick2
我在一个页面上有3个列表视图,我想创建一个ListView可以与每个列表一起使用的单个标题组件.
所以我有一个ListView:
ListView {
id: listOne
spacing: 5
header: headerComponent
model: ListOneModel
}
Run Code Online (Sandbox Code Playgroud)
它引用了以下标头组件:
Component {
id: headerComponent
Rectangle {
width: ListView.view.width
height: 50
Label {
text: "List One"
font.pixelSize: 20
elide: Label.ElideRight
width: ListView.view.width
padding: {
left: 14
}
background: Rectangle {
color: "red"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
如何使标题组件可重用,以便当我连接ListView到标题时,我还可以传入不同的标题?
我知道我可以更改标题组件并添加titleText属性,如下所示:
Component {
id: headerComponent
property string titleText: "My Title"
Rectangle {
width: ListView.view.width
height: 50
Label {
text: titleText
font.pixelSize: 20
elide: Label.ElideRight
width: ListView.view.width
padding: {
left: 14
}
background: Rectangle {
color: "red"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是如何在ListView中使用标题组件时指定titleText'属性?
您可以在每个列表视图中设置属性,然后从Header组件中访问该属性.
例如:-
ListView {
id: listOne
property string headertitle: "list one header"
spacing: 5
header: headerComponent
model: ListOneModel
}
ListView {
id: listTwo
property string headertitle: "list two header"
spacing: 5
header: headerComponent
model: ListTwoModel
}
ListView {
id: listThree
property string headertitle: "list three header"
spacing: 5
header: headerComponent
model: ListThreeModel
}
Component {
id: headerComponent
Rectangle {
width: ListView.view.width
height: 50
Label {
text: ListView.view.headertitle
font.pixelSize: 20
elide: Label.ElideRight
width: ListView.view.width
padding: {
left: 14
}
background: Rectangle {
color: "red"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)