0

下面的例子说明了我的问题。Rectangle我在左上角创建了一个小图标,点击它可以在红色和绿色之间切换颜色。

接下来,我创建 aStackView并将 a 推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}
    }
}
4

1 回答 1

0

显然,这种行为是预期的行为并且是符合的Component::createObject()。使用

    stack.push (stackRect,  {color:Qt.binding(function() { return rect.color})})

工作得很好。

于 2016-09-22T07:59:12.010 回答