8

(いくつかの QML バグレポートによると) 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

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 に答える