首页 文章

QML ListView由Javascript填充

提问于
浏览
8

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

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

我试图在Javascript中创建对象数组并将关联数组推送到ListView作为模型,但它失败了 . 无论我如何修改代码 .

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

谢谢

我试过的代码:

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

问题始终如一: ReferenceError: Can't find variable: name

3 回答

  • 6

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

    文件:gui.qml

    import "script.js" as Script
    
    model: ListModel { id: list_model_id }
    

    file:script.js

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

    呼叫:

    Script.makeList(list_model_id)
    
  • 9

    这可能有点晚了,但是使用Qt 5.5(可能更早,但测试5.5)你可以做到以下几点:

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

    QML中的代码显示此模型:

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

    将为代表提供 index . 它是模型中当前项的索引 . 有关更多信息,请参见ListView delegate property .

  • 19

    使用Component.onCompleted要容易得多:

    model: ListModel {
        Component.onCompleted: {
            append({"name": "A"});
            append({"name": "B"});
            append({"name": "C"});
        }
    }
    

相关问题