为什么QML中的属性绑定更改不会立即传播

问题描述 投票:0回答:1

在QML中应用属性绑定时,我遇到了一个问题。当我们有一个父组件(Window)和一个子组件(Rectangle)时,它具有一些绑定到父组件的属性(宽度,高度或anchors.fill:parent),当我在JS代码中更改父组件的属性时,以及是否要在相同的JS代码中读取子级属性(绑定到父级属性)的值,它显示旧值(未更新)。看起来父母属性的更改尚未传播到孩子的属性。这是此问题的示例:

Window {
id:myWindow
visible: true
width: 640
height: 480
title: qsTr("Hello World")
Rectangle{
    id:customRec
    width:parent.width
    height: parent.height
    color: "blue"
}
Button{
    id:myBtn
    onClicked: {
        myWindow.width = 800
        myWindow.height = 600
        console.log(customRec.width)
        console.log(customRec.height)
    }
}}

单击按钮后,显示:qml:640qml:480而不是800和600,而是新值。虽然矩形的缩放比例很好。再次单击后,它将显示更新的值(800和600)。有人可以解释一下这里发生了什么,如何将绑定属性更改立即传播到绑定属性。我正在将Qt 5.12.2与msvc2017_64编译器一起使用。

qt qml qt-quick
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.