以下示例说明了我的问题。
我在左上角创建了一个小Rectangle
,点击它可以切换红色和绿色之间的颜色。
接下来,我创建一个StackView
并将Rectangle
推送到StackView
并将第二个Rectangle的颜色绑定到左上角矩形的颜色
预期的行为是,点击左上方的Rectangle
也会更改Rectangle
上StackView
的颜色,因为颜色是绑定的。不幸的是,事实并非如此。
请注意,将stackRect2
推送到堆栈时可以正常工作(请参阅注释中的行)
import QtQuick 2.0
import QtQuick.Window 2.2
import QtQuick.Controls 1.4
Window {
id: mainWindow
visible: true
width: 1280
height: 720
Rectangle {
id: rect
width: 100
height: 100
focus: true
color: toggle? "red":"green"
property var toggle:false;
MouseArea {
anchors.fill: parent
onClicked: rect.toggle = !rect.toggle
}
}
StackView {
id: stack
width: 100
height:100
anchors.left: rect.right
anchors.leftMargin: 10
Component.onCompleted: {
stack.push ({item:stackRect, properties: {color:rect.color}})
//stack.push ({item:stackRect2})
}
}
Component {
id:stackRect
Rectangle {}
}
Component {
id:stackRect2
Rectangle {color:rect.color}
}
}
答案 0 :(得分:0)
Apparently,此行为是预期的行为,与Component::createObject()
一致。
使用
stack.push (stackRect, {color:Qt.binding(function() { return rect.color})})
工作正常。