推送到 StackView 的组件未正确绑定
Component pushed on StackView does not bind correctly
下面的例子说明了我的问题。
我在左上角创建了一个小 Rectangle
,单击它可以在红色和绿色之间切换颜色。
接下来,我创建一个 StackView
并将 Rectangle
推到 StackView
并将第二个矩形的颜色绑定到左上角矩形的颜色
预期的行为是,单击左上角 Rectangle
也会更改 StackView
上 Rectangle
的颜色,因为颜色已绑定。不幸的是,情况并非如此。
请注意,将 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}
}
}
Apparently,此行为是预期行为,符合 Component::createObject()
。
使用
stack.push (stackRect, {color:Qt.binding(function() { return rect.color})})
工作正常。
下面的例子说明了我的问题。
我在左上角创建了一个小 Rectangle
,单击它可以在红色和绿色之间切换颜色。
接下来,我创建一个 StackView
并将 Rectangle
推到 StackView
并将第二个矩形的颜色绑定到左上角矩形的颜色
预期的行为是,单击左上角 Rectangle
也会更改 StackView
上 Rectangle
的颜色,因为颜色已绑定。不幸的是,情况并非如此。
请注意,将 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}
}
}
Apparently,此行为是预期行为,符合 Component::createObject()
。
使用
stack.push (stackRect, {color:Qt.binding(function() { return rect.color})})
工作正常。