3

次のコードがあります。

Item {
    width:  fos.width; height: fos.height

    Rectangle {
        id: fos
        width: 120; height: 120
        color: "red"

        MouseArea {
            anchors.fill: parent
            onClicked: {
                if (fos.color == "red") fos.color = "gray"
                else fos.color = "red"
            }
        }
    }
}

クリックしRectangleた時の色を変えたい。MouseAreaただし、コードは機能しません。私のせいはどこですか?

4

1 に答える 1

6

問題はあなたのテストです:

fos.color == "red" 

"red"はの名前またはエイリアスにすぎません"#ff0000"。値を出力すると、次のように表示されます。

//...
MouseArea {
    anchors.fill: parent
    onClicked: {
        console.log('fos.color:', fos.color); // fos.color: #ff0000
        //...
    }
}

ドキュメントによると、色の同等性を使用Qt.colorEqual()またはテストする必要があります。"#ff0000"

于 2012-02-26T13:33:57.280 に答える