gpt4 book ai didi

javascript - 在 ListModel 中传递数组

转载 作者:行者123 更新时间:2023-11-28 12:17:50 25 4
gpt4 key购买 nike

我想知道如何在 ListModel 中传递数组?

好的,在 QML 中,我有一个 ListView,我将其设置为 ListModel,如下所示:

model: ListModel
{
id: myList
ListElement
{
name: ""
card: 0
books: []
}

}

我可以使用以下方法附加到它:

myList.append({name:"terry", card:00100, books:["024589","865976","879582","215645"]}); 

但是当我尝试将其输出到屏幕上时,我得到了这个。

{
"card": 00100
"books": {
"objectName": "",
"count": 4,
"dynamicRoles": false
},
"name": "terry",
"name": "terry"
}

我不知道为什么我会得到两个名字!我怎样才能获得书籍的值(value)?

我查找了 ListModel 的 QML 文档和 ListElement找不到与传递数组相关的任何内容,所有示例都是整数或字符串。

知道如何获取日期吗?
我确实通过使用 Component.onCompleted:{} 调用 Delegate 中的数组来解决这个问题,但我相信这不是一个好的/正确的方法,因为 Delegate> 不负责保存数据,应该在模型中完成,如果我错了,请纠正我。

感谢您的宝贵时间。

Edit01:感谢您的回复,这就是我需要数组的原因: 我在 Delegate 中有一个 ComboBox,如下所示:

delegate: Rectangle
{
id: rowID
width: 50
height: 40
color: "#323232"
Row
{
anchors.fill: parent
anchors.leftMargin: 10
anchors.rightMargin: 10
Label{
id: nameID
text: name
font.pixelSize: 12
width: 200
wrapMode: Text.WrapAnywhere
anchors.verticalCenter: parent.verticalCenter
color: "#999"
}

Label{
anchors.verticalCenter: parent.verticalCenter
text: "out:"
font.pixelSize: 12
color: "#999"
}

ComboBox{
id: booksID
height: 20
width: 50
model: books
anchors.verticalCenter: parent.verticalCenter
}
}
}

如您所见,我正在将名称提供给标签(id:nameID),并且我想将提供给 books 到具有 modelComboBox (id: booksID),如果我将 books 键设为 ListElement> 我怎样才能提供所有的值?

QML ListModelListElement文档没有提到任何有关正确获取所有 key 值的内容?它仅支持基于索引号的get(int index)

最佳答案

你做错了。数组成员必须是 ListElement:

ListModel {
id: mod
ListElement {
name: "ali"
dic: [ ListElement{text:"asad-o-llah"; code: 14}, ListElement{text:"aboo torab"; code: 72}, ListElement{text:"amir al-momenin"; code: 110}]
}
}

ListView {
model: mod
anchors.fill: parent
delegate: Component {
Rectangle {
width: parent.width; height: 50
Row {
Text {
text: name
}
ComboBox {
width: 100; height: 30
model: dic //<-- set dic as model for combo box
textRole: "text" //<-- important!
onCurrentIndexChanged: {
console.log("current code is "+model.get(currentIndex).code); //<-- get code value
}
}
}
}
}
}
Component.onCompleted: {
var v = mod.get(0).dic.get(0).value; //<-- sample usage
console.log(v);
}

关于javascript - 在 ListModel 中传递数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45156895/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com