在QML中检查/访问动态创建的对象

时间:2012-08-09 19:01:55

标签: javascript c++ qt qt4 qml

有没有办法检查存在并在QML / javascript中访问动态创建的对象(不使用C ++)?

我正在尝试使用类似于地图的界面创建应用程序 - 给定一个键和一个对象,我的应用程序必须找到具有该键的对象是否存在并用新对象覆盖。如果没有,则应用必须创建一个新对象并与密钥关联。

文档说动态管理的对象没有ID,我发现访问它们的唯一方法是使用objectName,这似乎需要C ++应用程序。

提前感谢。

1 个答案:

答案 0 :(得分:4)

您可以将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