javascript哈希映射中的QML集成错误
QML wrong integration in javascript hashmaps?
今晚我发现了一个问题,我想知道这是键盘和屏幕之间的错误还是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对象作为密钥存储在哈希映射myHash
中时,QML保留了对象类型,但忘记了属性?
问题是JavaScript对象与Map[String, Any]
最相似,因此您不是将对象newObject
作为关键字存储在myHash
中,而是在newObject
上调用toValue
/toString
的结果。
解决方案是将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)
}
相关文章:
- 如何检测用于WebGL的专用或集成显卡
- 在我的SPA应用程序中集成Facebook共享的问题
- vaadin:使用自定义布局集成angular js
- React ajax数据集成
- 有没有一个抽象层,这样我就可以集成一次,然后使用pusher、pubnub或faye
- IE中关于ZK和JavaScript集成的一些错误
- 如何将拼写检查集成到密文编辑器
- 将外部文件与AngularJs集成
- 如何将tesseract OCR与Cordova/Phonegap应用程序集成
- Cordova Facebook登录集成cordovaOauth
- 对象获胜'如果qml中的其他地方定义了数字动画属性,则t设置动画
- 如何在Angular js中集成其他页面中的样式
- 性能与模块化:将JS集成到PHP或单独的custom.JS中
- Meteor集成测试,在velocity'她的镜子上有茉莉花
- Okta与JavaScript的集成
- 将prettyPhoto集成到Wordpress主题中
- 将epub.js集成到firefox中,作为.epub的默认读取器
- 在Meteor:p5.AudioIn()中集成p5.sound.js不是构造函数
- 如何在QML中集成Javascript库(socketio)
- javascript哈希映射中的QML集成错误