在StackView上推送的组件无法正确绑定

时间:2016-09-21 15:09:24

标签: qt qml qtquick2 qtquickcontrols stackview

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

接下来,我创建一个StackView并将Rectangle推送到StackView并将第二个Rectangle的颜色绑定到左上角矩形的颜色

预期的行为是,点击左上方的Rectangle也会更改RectangleStackView的颜色,因为颜色是绑定的。不幸的是,事实并非如此。

请注意,将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}
    }
}

1 个答案:

答案 0 :(得分:0)

Apparently,此行为是预期的行为,与Component::createObject()一致。 使用

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

工作正常。