您可以使用JavaScript對象作爲地圖。您不能直接在QML中操作它,但是您可以移動所有代碼以將此對象處理爲JavaScript文件並將其作爲模塊包含在內。 下面是一個簡單的例子:
Map.js:
var _map = new Object()
function value(key) {
return _map[key]
}
function setValue(key, value) {
_map[key] = value
}
function remove(key) {
delete _map[key]
}
function keys() {
return Object.keys(_map)
}
function process() {
for (var key in _map) {
/* do something */
}
}
QML例如:
import QtQuick 1.1
import "Map.js" as Map
Item {
Component.onCompleted: {
Map.setValue("test", "hello")
console.log("test = ", Map.value("test"))
Map.remove("test", "hello")
console.log("test = ", Map.value("test"))
}
}
輸出將是:
test = hello
test = undefined
它的工作如預期!謝謝。還有什麼辦法來遍歷整個地圖?我需要在同一時間更改所有對象的值... – Ishida 2012-08-13 19:26:54
@Ishida:是的,甚至有兩種方式:)您可以在Map.js函數中定義返回列表,其中包含來自地圖的所有鍵(也可以寫函數,如果需要,它將返回所有值),然後處理該列表。或者你可以直接在Map.js中處理地圖。我更新了兩個函數迭代Map的例子。另外,在process()中,不僅可以通過鍵來迭代,還可以通過值來迭代 - 只需將「for」替換爲「for each」即可。 – 2012-08-14 18:30:43