我有以下代码:
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"
}
}
}
}
我想在单击 MouseArea
时更改 Rectangle
的颜色。但是,代码不起作用。我的错在哪里?
最佳答案
问题是你的测试:
fos.color == "red"
"red"
只是"#ff0000"
的名称或别名。您可以通过打印值来查看它,即:
//...
MouseArea {
anchors.fill: parent
onClicked: {
console.log('fos.color:', fos.color); // fos.color: #ff0000
//...
}
}
根据 documentation您应该使用 Qt.colorEqual()
或针对 "#ff0000"
测试颜色是否相等。
关于qt - 如何检查 QML 中的颜色是否相等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9452255/