我試圖做一個功能,將順時針改變按鈕的顏色。 當我分配property var acolor: buttons.itemAt(0).color
時,變量acolor
更改值爲buttons.itemAt(0).color
更改。爲什麼會發生?Rectangle.color的行爲像一個對象而不是像一個字符串
這是main.qml文件:
import QtQuick 2.6
import QtQuick.Window 2.2
import QtQuick.Controls.Styles 1.4
import QtQuick.Controls 2.2
import QtQuick.Layouts 1.3
Window {
id: root
visible: true
width: 600
height: 400
title: qsTr("My Window")
property int numberOfButtons: 9
GridLayout{
id: grid
columns: 3
anchors.fill: parent
Repeater {
id: buttons
model: root.numberOfButtons;
delegate: Mybutton {id: butt; color: Qt.rgba(Math.random(), Math.random(), Math.random(), 1); number: index}
}
}
}
這是Mybutton.qml:
所有的Rectangle {
id: rectangle
width: 50; height: 100
color: "red"
property int number: 0
MouseArea {
id: mouse
anchors.fill: parent
property var acolor: buttons.itemAt(0).color
onClicked: {
function rotate()
{
acolor = buttons.itemAt(0).color
console.log(acolor)//heare is #11754c
buttons.itemAt(0).color = buttons.itemAt(3).color
console.log(acolor)// but heare is #6c2c3d
buttons.itemAt(3).color = buttons.itemAt(6).color
buttons.itemAt(6).color = buttons.itemAt(7).color
buttons.itemAt(7).color = buttons.itemAt(8).color
buttons.itemAt(8).color = buttons.itemAt(5).color
buttons.itemAt(5).color = buttons.itemAt(2).color
buttons.itemAt(2).color = buttons.itemAt(1).color
buttons.itemAt(1).color = acolor
}
rotate()
}
}
}
標題是可怕的,也是QML屬性的上下文意味着綁定,這意味着對於屬性更改是有意義的,因爲綁定到它的另一個屬性發生更改。最後,我在回答中提到的問題是,QML將像對象那樣處理顏色屬性,而不是我實際上不知道的字符串。鑑於此,我將把標題更改爲對將來面對該問題的其他人更有用的格式。 – dtech