我得到了以下不起作用的代码(在QML文件中 - PixelAdapter.qml):
Item {
id: pixelAdapterId
property int in
property int alpha
property int out
out = in * 10 + alpha
}
我试过了:
pixelAdapterId.out = pixelAdapterId.in * 10 + pixelAdapterId.alpha
PixelAdapter.out: PixelAdapter.in * 10 + PixelAdapter.alpha
但一切都行不通。我觉得我没有在QML中做一些常见的事情,但我必须对我的属性进行一些计算,并将其结果“绑定”到另一个属性。 我需要修改什么?
答案 0 :(得分:2)
你可以简单地绑定它:
Rectangle {
width: 100
height: 100
focus: true
property int in
property int alpha
property int out: 10*in + alpha
Keys.onReturnPressed: {
console.log(out);
in = 5; alpha =10;
console.log(out);
in = 6;
console.log(out);
}
}
只要将有用的值绑定到参数,就会得到有意义的结果。
答案 1 :(得分:2)
您必须非常小心的一件事是意外重置/破坏您的财产绑定。
例如,如果你有:
Rectangle {
property int x
property int y: x + 1
property int z: 2 * y
}
然后你可以在x = 5
的某个地方执行一些JavaScript,然后由于绑定,y和z会自动更新。
但是,如果你在JavaScript中执行类似y = 6
的操作,那么它会破坏绑定,当x发生变化时,y将不再更新。
过去,这给我带来了很大的悲痛。不确定这是否有助于你的问题,但我想我会把它扔出去。