在QML文件中计算?

时间:2011-10-11 15:05:05

标签: qt qml

我得到了以下不起作用的代码(在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中做一些常见的事情,但我必须对我的属性进行一些计算,并将其结果“绑定”到另一个属性。 我需要修改什么?

2 个答案:

答案 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将不再更新。

过去,这给我带来了很大的悲痛。不确定这是否有助于你的问题,但我想我会把它扔出去。