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

QML-如何正确地将implicitWith设置为GridLayout,qml,grid-layout,Qml,Grid Layout,我使用的是QML5.12,基本上是尝试将implicitWidth设置为GridLayout 为此,我有一个紫色矩形,并将矩形的宽度设置为GridLayout 红色矩形适合GridLayout,因此我可以看到GridLayout的宽度 这是我的密码: Rectangle { anchors.fill: gl; color: "red"; opacity: 0.22 } Rectangle { id: rect; width: 350; height: 30; color: "purple"; }

我使用的是QML5.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 }
}
如果我运行代码,我希望两个矩形的宽度相同。 但实际结果是红色矩形更小。因此,这项建议是不体贴的

有人能告诉我为什么吗


谢谢你

GridLayout根据其子项的
implicitWidth
计算其自身的
implicitWidth
。因此,您设置的值将被计算值覆盖

implicitWidth
是项目想要拥有的宽度(如果没有明确设置
width
,它将拥有的宽度)。将其设置为基于其子项或某些内部值以外的其他内容是毫无意义的


在这里,您希望GridLayout的大小与
矩形的大小一致,因此只需设置它的
宽度
属性。

如果没有
宽度
设置,我猜
GridLayout
会根据内容调整其大小。从Qt文档:implicitWidth:定义项目的自然宽度或高度(如果未指定宽度或高度)。但是
GridLayout
隐式设置它的大小,因此
\u implicitWidth
不被考虑。是的,它看起来像。谢谢你提供的信息。