[英]How to add items dynamically to VisualItemModel in QML?
我有一個基於文本框的自定義qml元素。 我希望每當用戶按下VisualItemModel中的最后一個文本框時,會自動添加一個新的文本框。 有一種方法可以使用ListModel(使用append()),但沒有使用VisualItemModel。
這該怎么做? 即使是Javascript也會有幫助。
看起來像VisualItemModel
並不是真正用於動態管理 - 它是一個純粹的靜態構造。
VisualItemModel
是一個懶惰和笨拙的解決方案,用於獲取列表視圖以顯示不同的元素,將數據和UI塞入在一起。 如果這是重點,您可以通過使用標准ListModel
和ListView
輕松實現此目的:
ListView {
anchors.fill: parent
model: mod
delegate: Loader {
source: name + ".qml"
}
}
然后你可以像這樣附加到模型:
mod.append({"name" : "ItemName"})
然后在列表視圖中,委托將為每個列表條目創建適當的元素。
如果您不希望具有單獨的項目源,則可以在Component
和Loader
包裝不同的項而不是source
設置sourceComponent: name
:
Component {
id: c2
Rectangle {
width: 200
height: 100
color: "blue"
}
}
....
mod.append({"name" : c2})
但是在你的情況下你似乎不需要不同的元素來擁有不同的UI,因此你也不需要VisualItemModel
。 只需使視圖委托一個文本框ListModel
加到標准ListModel
,您將獲得另一個文本框。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.