如何禁用QML对象的可伸缩性

时间:2019-01-14 15:30:13

标签: qt qml

如何禁用QML对象的可调整大小?我创建的对象的height和width属性基于可伸缩对象,但是当父对象调整大小时,我不希望对象调整大小。我该如何实现?

 Window {
    id: window
    visible: true
    title: qsTr("Stack")

    Component.onCompleted: {
        window.showMaximized()
    }

    Rectangle {
        width:parent.width/2
        height:parent.height/2
    }
}

在上面的代码中,将以父级大小的1/2创建矩形,我会保持这种方式。当我调整窗口大小时,矩形也将调整大小,我希望在创建矩形后将其固定。我该如何实现?谢谢。

1 个答案:

答案 0 :(得分:3)

删除属性绑定。

Window {
    id: window
    visible: true
    title: qsTr("Stack")

    Component.onCompleted: {
        window.showMaximized()
        rect.width = parent.width / 2;      // use these
        rect.height = parent.height / 2;
    }

    Rectangle {
        id: rect
        // width: parent.width/2    // no property bindings
        // height: parent.height/2
    }
}

通过在rect.widthrect.height上使用属性绑定,可以使它们受动态更改。你不要那样相反,您可以从Javascript调用静态分配。

如果将JS代码放在Component.onCompleted中,它将仅运行一次(每次窗口调整大小时都不会更新)。这些分配不会创建属性绑定,不会修复rect.widthrect.height