Domanda

Ho il codice seguente:

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

Voglio cambiare il Rectangle colore quando il MouseArea viene cliccato. Tuttavia, il codice non funziona. Dov'è colpa mia?

È stato utile?

Soluzione

Il problema è il tuo test:

fos.color == "red" 

"red" è solo un nome o un alias per "#ff0000". Puoi vederlo stampando il valore, cioè:

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

Secondo documentazione dovresti usare Qt.colorEqual() o test contro "#ff0000" per l'uguaglianza del colore.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top