3 Stimmen

Wie überprüft man die Farbgleichheit in QML?

Ich habe den folgenden Code:

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

Ich möchte die Farbe des Rectangle ändern, wenn das MouseArea angeklickt wird. Allerdings funktioniert der Code nicht. Wo liegt mein Fehler?

7voto

hooblei Punkte 3170

Das Problem liegt bei Ihrem Test:

fos.color == "red" 

"red" ist nur ein Name oder Alias für "#ff0000". Sie können es sehen, indem Sie den Wert ausgeben, z.B.:

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

Laut Dokumentation sollten Sie Qt.colorEqual() verwenden oder gegen "#ff0000" für Farbgleichheit testen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X