2014-07-08 37 views
9

QT ve QML için tamamen yeni. İki Propery callValue ve handRaiseXBB katına arasındaki ilişkiye dayanan bir dikdörtgenin rengini ayarlamak çalışıyorum ama hatayıQML ifadesi

beklenmedik jetonu almak

ve

"eğer

nitelikli adı kimliği

beklenen

herkes ben doi neysem söyler misiniz ng yanlış?

import QtQuick 2.0 

Item{ 
    id: hand 

    property double callValue: 0.0 

    property double handRaiseXBB: 100 
    property string handCallColor: "green" 
    property string handFoldColor: "grey" 

    Rectangle { 
     anchors.fill: hand 
     if (hand.callValue >= hand.handRaiseXBB) { 
      color: hand.handFoldColor 
     } 
     else { 
      color: hand.handCallColor 
     } 
    } 
} 
+4

Sadece QML bildirime dildir ve işlevlerde zorunlu kod yazmak mümkün olduğunu unutmayın veya özellik bağları, ancak nesne tanımında değil. – QtRoS

cevap

14

Böyle yapabilirsiniz:

function getHandColor() 
{ 
    var handColor = hand.handCallColor 
    if(hand.callValue >= hand.handRaiseXBB) 
    { 
     handColor = hand.handFoldColor 
    } 
    return handColor 
} 
color: getHandColor() 
+2

Keşke iki kere katılabilirdim! Teşekkürler! –

+2

@ Q-bertsuit: qml javascript üzerine kurulu, bu yüzden bunu öğrenmeniz gerekecek gibi görünüyor. – lpapp

1
:

color: (hand.callValue >= hand.handRaiseXBB) ? hand.handFoldColor : hand.handCallColor 

Ayrıca bunu hesaplamak ve sonra fonksiyonun dönüş değeri ile renk özelliğini atamak için bir işlev yapabilir

Bu eğriyi başka bir şekilde görüntülemek için

Rectangle { 
    ... 
    color: { 
     color = hand.handCallColor 
     if(hand.callValue >= hand.handRaiseXBB) 
      color = hand.handFoldColor 
    } 
    ... 
} 

Fakat üçlü operatörlü form daha iyi bir formdur!

QML javascript, sonra ben, tüm itens javascript nesneler olduklarını inanıyoruz "temelli" olduğunu nasıl:

var Rectangle: { 
    color: "red", 
    id: "id", 
    //then we can do this 
    setColor: function(_color) {this.color = _color} 
}