2011-10-11 66 views
1

我得到了下面的代碼不工作(在QML文件 - PixelAdapter.qml):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

你可以簡單地將其綁定:

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); 
    } 
} 

您會盡快得到有意義的結果,你會綁定有用的值的參數。

+0

這似乎工作,但它不......我會盡力解釋。 問題是,在我的軟件中使用2個綁定與這個QML文件。一個綁定位於「in」值,另一個位於「out」值。 當我啓動我的軟件時,當我首先更改我的「in」值時,「out」值上的綁定將獲得新值。這工作。 但是,當我再次更改值時,「走出去」不更新......而就是該值會不斷地在我的軟件改變:/ 是否有人得到了一個關於它的想法? –

+0

也許我不理解......如果我TRU重新綁定到一個新的價值,我得到了這一點被不斷更新。看看答案中的例子。 –

2

有一件事你必須非常小心意外重置/破壞你的屬性綁定。

例如,如果您有:

Rectangle { 
    property int x 
    property int y: x + 1 
    property int z: 2 * y 
} 

然後你就可以執行某處一些JavaScript,做x = 5,然後y和z將因結合自動更新。

但是,如果你在你的JavaScript這樣做y = 6,那麼它打破了綁定,和y將不再當x變化更新。

這引起了我的悲傷大量過去。不知道這是否有助於您的問題,但我認爲我會把它扔在那裏。