javascript哈希映射中的QML错误集成?

javascript哈希映射中的QML错误集成?,javascript,qml,Javascript,Qml,今晚我发现了一个问题,我想知道这是键盘和屏幕之间的错误还是QML/javascript集成问题 以下是我的例子: var myHash = {} for (var i=0; i<3; ++i) { var newObject = Qt.createQmlObject('import QtQuick 2.3; Rectangle {color: "red"; width: 20; height: 40}', main, "test") console.log(newObje

今晚我发现了一个问题,我想知道这是键盘和屏幕之间的错误还是QML/javascript集成问题

以下是我的例子:

var myHash = {}

for (var i=0; i<3; ++i) {
    var newObject = Qt.createQmlObject('import QtQuick 2.3; Rectangle {color: "red"; width: 20; height: 40}', main, "test")
    console.log(newObject.color)
    myHash[newObject] = i
}

for (var key in myHash) {
    console.log("Object type:" + key)
    console.log("Color: " + key.color)
}

因此,当我将QML对象作为键存储在哈希映射
myHash
中时,QML保留了对象类型,但忘记了属性?

问题是JavaScript对象与
映射[String,Any]最为相似
-因此您不是将对象
newObject
存储为
myHash
中的一个键,而是调用
toValue
/
toString
newObject
的结果

解决方案是将
newObject
存储为一个值,并使用其他内容作为键:

var myHash = {}

for (var i=0; i<3; ++i) {
    var newObject = Qt.createQmlObject('import QtQuick 2.3; Rectangle {color: "red"; width: 20; height: 40}', main, "test")
    console.log(newObject.color)
    myHash["key_" + i] = newObject;
}

for (var key in myHash) {
    console.log("Object entry:" + key)
    console.log("Color: " + myHash[key].color)
}
var myHash={}

对于(var i=0;这不是一个好的解决方案,因为:-我真的希望我的qml对象作为一个键存储到我的哈希中,-通过这种方式存储键,将很难从我的字符串键中检索到我的整数。@jaddawyn为什么要将其存储为键?您的示例看起来像是一个有缺陷的设计-也许是,也许它没有给我们一些解释第二:这不是它的工作原理,这可能会有帮助:我没有看到任何设计问题,我只想关联两个QML对象(上面的代码只是为了突出我的问题)。但是你的链接让我明白javascript只能将字符串存储为键。我期待着更好的结果。无论如何,谢谢你的回答。
var myHash = {}

for (var i=0; i<3; ++i) {
    var newObject = Qt.createQmlObject('import QtQuick 2.3; Rectangle {color: "red"; width: 20; height: 40}', main, "test")
    console.log(newObject.color)
    myHash["key_" + i] = newObject;
}

for (var key in myHash) {
    console.log("Object entry:" + key)
    console.log("Color: " + myHash[key].color)
}