我想制作一个看起来像这样的视图(为简洁起见,我在此不再赘述)
__________
| text |
|__________|
| |headr|
|____|_____|
|text|item1|
| |item2|
| | |
|text|item3|
| |item4|
| |item5|
| |item6|
|____|_____|
Run Code Online (Sandbox Code Playgroud)
并一直尝试使用GridLayout做到这一点。问题是我可能有很多行。这仅取决于我的模型。因此,我希望能够有一个重复相同n个元素的转发器。但是,它似乎只包含一个组成部分。我想重复一个元素,但这不是GridLayout找出间距的方式。因此,除了使用动态对象创建外,这似乎是不可能的。
我试图重复的实际项目的代码是这样的
Text {
Layout.alignment: Qt.AlignHCenter
text: abbr
color: "#545454"
}
VerticalRule {
Layout.fillHeight: true
}
ColumnLayout {
Repeater {
model: getModel()
Image {}
}
}
VerticalRule {
Layout.fillHeight: true
}
ColumnLayout {
Repeater {
model: getModel()
Image {}
}
}
Run Code Online (Sandbox Code Playgroud)
因此,有什么方法可以轻松地在qml中做到这一点,或者当我涉及这种超级特定的表格格式时,我是自己一种。
您可以使用GridLayout来完成;使用多个中继器,每个用于Gridlayout中的列。以下代码段复制了您的文本布局:
GridLayout {
columns: 2
Text {
Layout.columnSpan: 2
Layout.alignment: Qt.AlignHCenter
text: 'text'
}
Text {
Layout.column: 1
Layout.row: 1
text: 'header'
}
Repeater {
model: list
Text {
Layout.column: 0
Layout.row: index + 2
Layout.alignment: Qt.AlignTop
text: label
}
}
Repeater {
model: list
Column {
Layout.column: 1
Layout.row: index + 2
Repeater {
model: items
Text { text: item }
}
}
}
ListModel {
id: list
ListElement {
label: 'text1'
items: [
ListElement { item: 'item1' },
ListElement { item: 'item2' }
]
}
ListElement {
label: 'text2'
items: [
ListElement { item: 'item3' },
ListElement { item: 'item4' },
ListElement { item: 'item5' },
ListElement { item: 'item6' },
ListElement { item: 'item7' }
]
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1619 次 |
| 最近记录: |