为什么绑定在JS代码(QML)中不起作用?

时间:2018-01-26 07:21:33

标签: javascript qt qml

有一种具有Rectangle类型属性的可重用元素:

property Item middleRegion: Rectangle {
   color: "grey";
   border.width: 1;
   height: line.height;
   parent: line
}

然后,如果用户定义了自己的middleRegion,则会调用onMiddleRegionChanged()

onMiddleRegionChanged: {
    middleRegion.parent = line
    middleRegion.height = line.height
}

但是,尽管line.height发生了变化,但middleRegion.height之后并未发生变化。为什么绑定在此代码中不起作用?

重要的是,如果用户没有定义middleRegion,那么一切进展顺利。

1 个答案:

答案 0 :(得分:0)

我自己找到了答案。

根据Qt documentation的示例,使用Qt.binding()

解决了问题
import QtQuick 2.0

Rectangle {
    width: 100
    height: width * 2

    focus: true
    Keys.onSpacePressed: {
        height = Qt.binding(function() { return width * 3 })
    }
}