QML - 创建一个 re-usable ListView header 组件
QML - Creating a re-usable ListView header component
我在单个页面上有 3 个列表视图,我想创建一个 ListView
header 组件,我可以将其用于每个列表。
所以我有一个 ListView:
ListView {
id: listOne
spacing: 5
header: headerComponent
model: ListOneModel
}
它引用了以下 header 组件:
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"
}
}
}
}
如何制作 header 组件 re-usable 以便在将 ListView
连接到 header 时我也可以传入不同的标题?
我知道我可以更改 header 组件并添加一个 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"
}
}
}
}
但是在我的 ListView 中使用 header 组件时如何指定标题文本' 属性?
创建新文件调用 ListHeader.qml
包含您的 header:
import QtQuick 2.0
import QtQuick.Controls 1.1
Rectangle {
property alias name: mylabel.text
width: ListView.view.width
height: 50
Label {
id: mylabel
text: "List One"
font.pixelSize: 20
elide: Label.ElideRight
width: parent.width
padding: {
left: 14
}
background: Rectangle {
color: "red"
}
}
}
并像这样使用它:
ListView {
header: ListHeader{
name: "ListOneNewName"
}
}
关于 importing and custom types.
的 QML 文档
您可以在每个列表视图中设置一个 属性,然后从页眉组件中访问该 属性。
例如:-
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"
}
}
}
}
我在单个页面上有 3 个列表视图,我想创建一个 ListView
header 组件,我可以将其用于每个列表。
所以我有一个 ListView:
ListView {
id: listOne
spacing: 5
header: headerComponent
model: ListOneModel
}
它引用了以下 header 组件:
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"
}
}
}
}
如何制作 header 组件 re-usable 以便在将 ListView
连接到 header 时我也可以传入不同的标题?
我知道我可以更改 header 组件并添加一个 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"
}
}
}
}
但是在我的 ListView 中使用 header 组件时如何指定标题文本' 属性?
创建新文件调用 ListHeader.qml
包含您的 header:
import QtQuick 2.0
import QtQuick.Controls 1.1
Rectangle {
property alias name: mylabel.text
width: ListView.view.width
height: 50
Label {
id: mylabel
text: "List One"
font.pixelSize: 20
elide: Label.ElideRight
width: parent.width
padding: {
left: 14
}
background: Rectangle {
color: "red"
}
}
}
并像这样使用它:
ListView {
header: ListHeader{
name: "ListOneNewName"
}
}
关于 importing and custom types.
的 QML 文档您可以在每个列表视图中设置一个 属性,然后从页眉组件中访问该 属性。
例如:-
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"
}
}
}
}