Оператор 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}
}