2013-06-24 68 views
0

我的應用修改了移動平臺上的用戶代理字符串。 (用戶代理工具)以QML格式存儲列表內容的最佳方式

雖然讓用戶定製他們的預設列表會很好。我想知道哪種方式來存儲內容將是最好的。

需要的操作:加載列表,添加元素,刪除元素,更改元素的順序,保存列表。

想到使用XML,因爲有XmlListModel可用。但有什麼更好的?如果xml是最好的,xml可以輕鬆地從qml端操縱嗎?

感謝

/編輯:我的功能是這樣的:

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() 

我如何填充一個ListView與數據的GetList選擇?

感謝

編輯:這不工作:

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

錯誤是:Unable to assign [undefined] to QString text

回答

2

隨着XmlListModel,你將不能夠很容易地只使用QML修改數據,但真的很容易閱讀。 如果你需要讀寫,並且只想使用QML,我建議你使用ListModel作爲工作模型,並將數據緩存到LocalStorage中(它目前是一個帶有表格的SQLite數據庫文件,非常經典)。

here is the doc of Local Storage

+0

這將與QtQuick 1.0一起工作嗎? (或1.1)? – marmistrz

+0

是的,使用QtQuick 1.0 ListModel和LocalStorage單例對象。 – TheBootroo

+0

不幸的是,我試過了,並且使用Qt 4.7.4和QtQuick 1.1,「QtQuick.LocalStorage未安裝」 有沒有解決方案可以幫助您? – marmistrz