web-dev-qa-db-ja.com

QMLのifステートメント

QTとQMLはまったく新しいものです。 2つのプロパティdoubleのcallValuehandRaiseXBBの関係に基づいて長方形の色を設定しようとしていますが、エラーが発生します

予期しないトークンの場合」

そして

修飾名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
        }
    }
}
10
Q-bertsuit

あなたはこのようにそれを行うことができます:

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()
21
Retired Ninja

これを解決する別の形式は次のとおりです。

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

ただし、3項演算子を含むフォームの方が優れています。

QMLはjavascriptに「基づいて」おり、すべてのitensがjavascriptオブジェクトであると信じています。

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