簡體   English   中英

如何在QML中動態地向VisualItemModel添加項目?

[英]How to add items dynamically to VisualItemModel in QML?

我有一個基於文本框的自定義qml元素。 我希望每當用戶按下VisualItemModel中的最后一個文本框時,會自動添加一個新的文本框。 有一種方法可以使用ListModel(使用append()),但沒有使用VisualItemModel。

這該怎么做? 即使是Javascript也會有幫助。

看起來像VisualItemModel並不是真正用於動態管理 - 它是一個純粹的靜態構造。

VisualItemModel是一個懶惰和笨拙的解決方案,用於獲取列表視圖以顯示不同的元素,將數據和UI塞入在一起。 如果這是重點,您可以通過使用標准ListModelListView輕松實現此目的:

ListView {
    anchors.fill: parent
    model: mod
    delegate: Loader {
        source: name + ".qml"
    }
}

然后你可以像這樣附加到模型:

mod.append({"name" : "ItemName"})

然后在列表視圖中,委托將為每個列表條目創建適當的元素。

如果您不希望具有單獨的項目源,則可以在ComponentLoader包裝不同的項而不是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM