QML:使用onclick设置矩形的颜色

时间:2017-10-07 00:03:59

标签: gridview qml qt5 pyqt5

我对QT和QML相对较新。我看过一些例子,当按下一个矩形时,可以改变一些外部对象(如文本)的颜色。但是,我想做一些相关但不同的事情。

设定:

我想要一个矩形网格。比方说5x5网格。所有这些矩形都可以是蓝色。尺寸并不重要。

示例:

  • 如果我按(0,0)处的矩形,其颜色应更改为红色。
  • 如果我按(0,1)处的矩形,它的颜色也会变为红色。
  • 如果矩形为红色并按下它,则应恢复为蓝色。

理想情况下,我还想知道哪些矩形是红色,哪些是蓝色。希望我以后可以解决这个问题。现在,如果有人可以帮我开始改变颜色,那将非常有用。了解如何在按下时更改单个Rectangle的颜色将非常有帮助。提前谢谢!

1 个答案:

答案 0 :(得分:0)

Item {
id: root
width: 500
height: 500

Column {
    Repeater {
        id: column
        model: 5
        Row {
            Repeater {
                id: row
                model: 5
                Rectangle {
                    id: rect
                    property bool isBlue: true
                    width: 100
                    height: 100
                    color: isBlue ? "blue" : "red"
                    border.color: "white"
                    border.width: 5
                    Text {
                        font.pixelSize: 15
                        anchors.centerIn: parent
                        text: rect.isBlue ? "blue" : "red"
                        color: "white"
                    }

                    MouseArea {
                        anchors.fill: parent
                        onClicked: {
                            rect.isBlue = !rect.isBlue
                        }
                    }
                }
            }
        }
    }
}

}