Domanda

Ho appena realizzato che (secondo alcuni QML Bugreport) v'è JSON delegato per ListView mancanti. Così ho due scelte, riempirlo per modello realizzato in Javascript o C ++

Specialmente Ho bisogno di scaricare i dati da .json predefinito URL e li analizza per ListView.

Ho cercato di creare array di oggetti in Javascript e spingere serie Assoc a ListView come modello, ma è venuto a mancare. Non importa quanto ho modificato il codice.

Così, c'è solo C ++ soluzione o posso fare il modello ListView da JavaScript?

Grazie

Codice ho provato:

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

Il problema è sempre stato: ReferenceError: Can't find variable: name

È stato utile?

Soluzione

A causa di consigliare dai mouli@irc.freenode.net#qt fare questo:

file: gui.qml

import "script.js" as Script

model: ListModel { id: list_model_id }

di file: script.js

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

chiamata:

Script.makeList(list_model_id)

Altri suggerimenti

Può essere un po 'in ritardo, ma con Qt 5.5 (forse prima, ma testet con 5.5) è possibile effettuare le seguenti operazioni:

lascia supporre che avete ottenuto un array come questo:
var dataArray = [{"name":"A"},{"name":"B"},{"name":"C"}]

Il codice in QML per visualizzare questo modello:

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

Il index sarà fornito per il delegato. E 'l'indice per l'elemento corrente all'interno del modello. Vedere ListView proprietà delegato per ulteriori informazioni.

E 'molto più facile da usare Component.onCompleted :

model: ListModel {
    Component.onCompleted: {
        append({"name": "A"});
        append({"name": "B"});
        append({"name": "C"});
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top