gpt4 book ai didi

javascript - QML 在 JavaScript HashMap 中的集成错误?

转载 作者:行者123 更新时间:2023-11-28 07:50:37 25 4
gpt4 key购买 nike

今晚我发现了一个问题,我想知道这是键盘和屏幕之间的错误还是 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: Initial color: #ff0000
qml: Initial color: #ff0000
qml: Initial color: #ff0000
qml: Object type:QQuickRectangle(0x98e9ac8)
qml: Color: undefined
qml: Object type:QQuickRectangle(0x98da7a0)
qml: Color: undefined
qml: Object type:QQuickRectangle(0x970b328)
qml: Color: undefined

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

最佳答案

问题是 JavaScript 对象最类似于 Map[String, Any] - 所以你没有存储对象 newObject作为 myHash 中的键而是调用 toValue 的结果/toStringnewObject .

解决方案是存储 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)
}

关于javascript - QML 在 JavaScript HashMap 中的集成错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26854433/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com