Оператор If в QML

совершенно новый для QT и QML. Я пытаюсь установить цвет прямоугольника на основе отношения между двумя правильными двойниками callValue и handRaiseXBB, но я получаю ошибку

неожиданный токен если"

и

ожидается квалифицированное имя id

может кто-нибудь сказать мне, что я делаю неправильно?

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

2 ответов


Вы можете сделать это так:

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

вы также можете сделать функцию для ее вычисления, а затем назначить свойство color с возвращаемым значением функции:

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

другая форма для slove это

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

но форма с тернарным оператором-лучшая форма!

QML "основан" на javascript, тогда я верю, что все itens являются объектами javascript, как:

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