在QML中存储列表内容的最佳方式

时间:2013-06-24 06:34:37

标签: xml qt list storage qml

我的应用修改移动平台上的用户代理字符串。 (用户代理工具)

让用户自定义预设列表会很不错。我想知道哪种方式存储内容将是最好的。

需要的操作:加载列表,添加元素,删除元素,更改元素的顺序,保存列表。

考虑使用XML,因为XmlListModel可用。但有什么更好的吗?如果xml是最好的,可以从qml端轻松操作xml吗?

由于

/ edit:我的功能是这样的:

function getDatabase() {return openDatabaseSync("UserAgentTool", 1.0, "User Agent Tool", 10000); }


function getList()
{
    var db = getDatabase();
    var ret
    db.transaction( function (tx)
    {
        ret = tx.executeSql("SELECT * FROM UserAgents")
    })

    return ret
}

function addToList(ualabel, uastring)
{
    var db = getDatabase();
    db.transaction(function (tx)
    {
        tx.executeSql('CREATE TABLE IF NOT EXISTS UserAgents(ualabel TINYTEXT UNIQUE, uastring TEXT)')
        var ret = tx.executeSql("INSERT OR REPLACE INTO UserAgents VALUES(?, ?)", [ualabel, uastring])
        if (ret.rowsAffected <= 0) sqlError();
    })

}

signal sqlError()

如何使用getList数据中的选定内容填充ListView?

由于

编辑:这不起作用:

ListView
{
    anchors.fill: parent
    id: uaview
    model: uamodel
    delegate: Button { text: model.ualabel}
}

错误是:Unable to assign [undefined] to QString text

1 个答案:

答案 0 :(得分:2)

使用XmlListModel,您无法仅使用QML轻松修改数据,但非常容易阅读。 如果你需要读写,并且只想使用QML,我建议你使用ListModel作为工作模型并将数据缓存到LocalStorage(它当前是一个带表的SQLite数据库文件,相当经典)。

here is the doc of Local Storage