1
我有一個包含項目列表的XML響應。每個項目都包含另一個子項目列表。我能夠成功地將其轉換爲QML中的模型,但我在列出列表列表時遇到問題。ListView ListView列中的列或QML處理列表的列表
我想渲染項目列表爲 s,每個都有它們的標題;以及水平附加爲Column
的子項列表到其對應的。看起來這應該是每個使用ListView
這些組件的QML文檔很容易,但我遇到了兩個問題:
- 子項
Column
會針對的「稱號」Column
疊加 - 只顯示第一個子項,其餘的被忽略
這裏的相對最小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
?還是有其他組件我應該用來實現預期的結果?
這個工作可視化(我刪除外'Column' - 因爲我想要子行水平附加到行)。但是,AFAICT與「ListView」的區別在於,如果內容太寬,它可以滾動,因爲它實現了「Flickable」,但使用「Repeater」它只會在屏幕上消失。是的,我從這篇文章中得到了使用嵌套'ListView'的想法 - http://www.mail-archive.com/[email protected]/msg00808.html。那麼這是一個錯誤?它是否也適用於'ListView'(或'GridView')? –
所以你的意思是使嵌套ListView水平?至少,你應該給它一個尺寸。鄰居列中孤獨的Text元素也是如此。默認情況下,它只會展開爲符合文本所需的任何內容(隱式大小)。 – jpnurmi
不幸的是,添加顯式大小和方向不會改變行爲。該列表仍然從「行」的最左側位置開始,疊加在「標題」列的頂部,仍然只顯示第一個項目。 –