Question

J'ai le code suivant:

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

Je veux changer la Rectangle de couleur lorsque l' MouseArea est cliqué.Cependant, le code ne fonctionne pas.Où est ma faute?

Était-ce utile?

La solution

Le problème, c'est votre test:

fos.color == "red" 

"red" n'est qu'un nom ou alias pour "#ff0000".Vous pouvez le voir par l'impression de la valeur, c'est à dire:

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

Selon la documentation vous devez utiliser Qt.colorEqual() ou test contre "#ff0000" pour la couleur de l'égalité.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top