QML - 如何正确地将 implicitWith 设置为 GridLayout

QML - How to correctly set an implicitWith to a GridLayout

我使用的是 Qml 5.12,主要是尝试将 implicitWidth 设置为 GridLayout。

为此,我有一个紫色矩形并将矩形的宽度设置为 GridLayout。

红色矩形适合 GridLayout,因此我可以看到 GridLayout 的宽度。

这是我的代码:

Rectangle { anchors.fill: gl; color: "red"; opacity: 0.22 }
Rectangle { id: rect; width: 350; height: 30; color: "purple"; }

GridLayout
{
    id: gl
    y: 35
    implicitWidth: rect.width
    columns: 2
    Label { text: "This is a test" }
    SpinBox { Layout.alignment: Qt.AlignRight }
}

如果我 运行 代码,我希望我的两个矩形具有相同的宽度。 但实际结果是红色矩形变小了。所以implicitWidth考虑不周

谁能告诉我为什么?

谢谢!

GridLayout 根据其 children 的 implicitWidth 计算其自己的 implicitWidth。因此,您设置的值会被计算值覆盖。

implicitWidth 是一个 Item 想要的宽度(如果没有明确设置 width 它应该有的宽度)。根据其 children 或某些内部值以外的其他内容设置它毫无意义。

此处您希望 GridLayout 与 Rectangle 的大小完全相同,因此只需设置其 width 属性.