从数据库将QML元素加载到ListView

从数据库将QML元素加载到ListView,listview,qml,meego,meego-harmattan,Listview,Qml,Meego,Meego Harmattan,我正在为我的n9编写一个应用程序,但有一个数据库问题。我不使用Ma..cpp或其他C++文件来进行应用程序。我从qml中使用javscript创建、删除、添加等数据到数据库。现在我只是把所有的条目放在一个字符串中。一切正常。但是现在我想将数据库中的条目显示为ListView。 我该怎么做呢?您可以为ListView动态创建一个模型。类似这样的: import QtQuick 2.0 import "main.js" as Main Rectangle { id: root L

我正在为我的n9编写一个应用程序,但有一个数据库问题。我不使用Ma..cpp或其他C++文件来进行应用程序。我从qml中使用javscript创建、删除、添加等数据到数据库。现在我只是把所有的条目放在一个字符串中。一切正常。但是现在我想将数据库中的条目显示为ListView。
我该怎么做呢?

您可以为ListView动态创建一个模型。类似这样的:

import QtQuick 2.0
import "main.js" as Main

Rectangle {
    id: root

    ListView {
         width: 180; height: 200

         model: Main.createModel(root)
         delegate: Text {
             text: name + ": " + number
        }
     }
}    
main.js

function createModel(parent) {
    var s = 'import QtQuick 2.0; ListModel {\n';
    var data = ["a", "b"];  // your data from database will be here
    for(var x in data) {
        var s2 = "ListElement {name: \"" + x+ "\"; number: \"" + x + "\" }\n";
        s += s2;
    }

    s += "}\n";
    console.log(s);
    return Qt.createQmlObject(s, parent, "mainModel");
}

您可以动态地为ListView创建模型。类似这样的:

import QtQuick 2.0
import "main.js" as Main

Rectangle {
    id: root

    ListView {
         width: 180; height: 200

         model: Main.createModel(root)
         delegate: Text {
             text: name + ": " + number
        }
     }
}    
main.js

function createModel(parent) {
    var s = 'import QtQuick 2.0; ListModel {\n';
    var data = ["a", "b"];  // your data from database will be here
    for(var x in data) {
        var s2 = "ListElement {name: \"" + x+ "\"; number: \"" + x + "\" }\n";
        s += s2;
    }

    s += "}\n";
    console.log(s);
    return Qt.createQmlObject(s, parent, "mainModel");
}