javascript哈希映射中的QML错误集成?
今晚我发现了一个问题,我想知道这是键盘和屏幕之间的错误还是QML/javascript集成问题 以下是我的例子: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
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)
}