我正在尝试在运行时检查属性的类型:
Node {
id: root
property string foo
property color diffuseColor
...
}
(因为我是从像
{foo: "bar", diffuseColor: [0.5, 1, 0]}
这样的JS对象动态设置它的,只是颜色以不兼容的格式给出,所以简单的分配是行不通的。
我需要这样的代码:
var targetObject = ... // the QML object
for(var k in jsobj) {
if(isColorProperty(targetObject[k]))
targetObject[k] = Qt.rgba(jsobj[k][0], jsobj[k][1], jsobj[k][2], 1)
else
targetObject[k] = jsobj[k]
}
为了实现
isColorProperty()
,我尝试了许多不同的方法,例如使用instanceof
(类型错误),检查Object.getPrototypeOf
结果(类型错误),使用.toString()
(仅返回HTML颜色字符串),'typeof' (返回“对象”)这些都不起作用。
pragma ValueTypeBehavior: Addressable
。
使用此编译指示,除其他外,可以使用
instanceof
检查值类型,例如:
root.foo instanceof color // true