我有一个包含项目列表的XML响应。每个项目包含另一个子项目列表。我能够成功地将其转换为QML中的模型,但是我在排除列表列表方面遇到了问题。
我想将项目列表呈现为Row
s,每个项目都有自己的标题;以及将Column
水平附加到其对应的Row
的子项列表。从使用ListView
的每个组件的QML文档看起来这应该很容易,但我遇到了两个问题:
Column
重叠在Column
Row
上
这是相对最小的QML(可以与qmlscene
一起运行)来重现:
import QtQuick 2.5
ListView {
width: 640
height: 480
model: ListModel {
ListElement { title: "title 1" }
ListElement { title: "title 2" }
}
delegate: Row {
width: parent.width
Text {
text: title
elide: Text.ElideRight
}
ListView {
orientation: ListView.Horizontal
model: ListModel {
ListElement { name: "name 1"; description: "desc 1" }
ListElement { name: "name 2"; description: "desc 2" }
}
delegate: Column {
Text { text: "name: " + name + "; desc: " + description }
}
}
}
}
预期输出为:
title 1 name: name 1; desc: desc1 name: name 2; desc: desc 2
title 2 name: name 1; desc: desc1 name: name 2; desc: desc 2
我是否在错误的地方使用ListView
?或者我应该使用其他组件来达到预期效果吗?
答案 0 :(得分:1)
您可能并不想使用嵌套的垂直列表视图?这将是次优的可用性。
import QtQuick 2.5
ListView {
width: 640
height: 480
model: ListModel {
ListElement { title: "title 1" }
ListElement { title: "title 2" }
}
delegate: Row {
width: parent.width
Text {
text: title
width: 100
elide: Text.ElideRight
}
Column {
Repeater {
model: ListModel {
ListElement { name: "name 1"; description: "desc 1" }
ListElement { name: "name 2"; description: "desc 2" }
}
delegate: Column {
Text { text: "name: " + name + "; desc: " + description }
}
}
}
}
}