在QML中,为什么Layout.verticalStretchFactor或Layout.horizontalStretchFactor不起作用?

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

正如官方文档所说,从Qt 6.5开始,有两个附加属性,Layout.verticalStretchFactor和Layout.horizontalStretchFactor,它们允许您指定垂直和水平拉伸因子。例如,如果第一个项目的拉伸因子为 1,第二个项目的拉伸因子为 2,则第一个项目的目标是获得可用空间的 1/3,第二个项目的目标是获得可用空间的 2/3。可用空间。

但是,我尝试了一下,并没有得到预期的结果。这两件物品的尺寸相同。这是代码:

import QtQuick
import QtQuick.Controls
import QtQuick.Layouts

Window {
    width: 640
    height: 480
    visible: true
    title: qsTr("Hello World")

    ColumnLayout {
        anchors.fill: parent

        Rectangle {
            Layout.fillHeight: true
            Layout.fillWidth: true
            Layout.verticalStretchFactor: 1
            border.color: "red"
        }

        Rectangle {
            Layout.fillHeight: true
            Layout.fillWidth: true
            Layout.verticalStretchFactor: 2
            border.color: "blue"
        }
    }
}

Layout.horizontalStretchFactor 也有同样的问题。我正在使用 Qt 6.7.2。有什么问题吗

qml qt6
1个回答
0
投票

听起来像一个错误。这有效,但前提是您将

Layout.preferredHeight
Layout.maximumHeight
设置为某些值。 作为解决方法,您可以将其设置为:

ColumnLayout {
    anchors.fill: parent
    spacing: 0
    Rectangle {
        Layout.fillHeight: true
        Layout.fillWidth: true
        Layout.preferredHeight: 1
        Layout.maximumHeight: 1000
        Layout.verticalStretchFactor: 1
        color: "red"
    }
    
    Rectangle {
        Layout.fillHeight: true
        Layout.fillWidth: true
        Layout.preferredHeight: 1
        Layout.maximumHeight: 1000
        Layout.verticalStretchFactor:2
        color: "blue"
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.