8

我刚刚意识到(根据一些 QML Bugreport)缺少 ListView 的 JSON 代表。所以我有两个选择,用 Javascript 或 C++ 创建的模型填充它

特别是我需要从预定义的 URL 下载 .json 数据并将它们解析为 ListView。

我试图在 Javascript 中创建对象数组并将 assoc 数组作为模型推送到 ListView,但它失败了。不管我如何修改代码。

那么是否只有 C++ 解决方案或者我可以通过 Javascript 制作 ListView 模型?

谢谢

我试过的代码:

return [{"name":"value"}]
return {"name":"value"}
return [["name","value"]]

问题一直是:ReferenceError: Can't find variable: name

4

3 回答 3

20

根据 mouli@irc.freenode.net#qt 的建议,请执行以下操作:

文件:gui.qml

import "script.js" as Script

model: ListModel { id: list_model_id }

文件:script.js

function makeList(id){
    id.append({"name":"value1"});
    id.append({"name":"value2"});
}

称呼:

Script.makeList(list_model_id)
于 2011-04-28T15:44:07.857 回答
9

可能有点晚了,但是使用 Qt 5.5(可能更早,但使用 5.5 的 testet),您可以执行以下操作:

让我们假设你有一个这样的数组:
var dataArray = [{"name":"A"},{"name":"B"},{"name":"C"}]

QML 中用于显示此模型的代码:

ListView {
    model: dataArray //the array from above
    delegate: Label {
        text: dataArray[index].name
    }
}

index提供给代表。它是模型中当前项目的索引。有关详细信息,请参阅ListView 委托属性

于 2015-07-08T23:01:03.827 回答
6

它更容易使用Component.onCompleted

model: ListModel {
    Component.onCompleted: {
        append({"name": "A"});
        append({"name": "B"});
        append({"name": "C"});
    }
}
于 2014-02-08T15:16:47.677 回答