Qt QML堆栈列布局子项彼此重叠?

Qt QML堆栈列布局子项彼此重叠?,qt,qml,qtquick2,Qt,Qml,Qtquick2,我是QML的新手,所以我可能会问一些显而易见的问题。我正在努力将ColumnLayout中的元素堆叠在彼此之上。他们之间的距离太大了,我无能为力。有关更多详细信息,请参见屏幕截图: 以下是实际的QML: ColumnLayout { anchors.fill: parent spacing: 0 Rectangle { color: "blue" Layout.fillWidth: true height: 50

我是QML的新手,所以我可能会问一些显而易见的问题。我正在努力将ColumnLayout中的元素堆叠在彼此之上。他们之间的距离太大了,我无能为力。有关更多详细信息,请参见屏幕截图:

以下是实际的QML:

ColumnLayout {
    anchors.fill: parent
    spacing: 0

    Rectangle {
        color: "blue"
        Layout.fillWidth: true
        height: 50
    }

    Rectangle {
        color: "red"
        Layout.fillWidth: true
        height: 50
    }

    Rectangle {
        color: "yellow"
        Layout.fillWidth: true
        height: 50
    }
}
我想做的是让矩形从上到下对齐,它们之间的间距可能是2-3像素


谢谢

如果您将填充物移到父级,并将填充物放置在那里,使填充物刚好达到宽度,则代码将运行良好

anchors.left: parent.left
anchors.right: parent.right 
之后,代码将如下所示

ColumnLayout {
    anchors.left: parent.left
    anchors.right: parent.right
    spacing: 2 //spacing between items in layout
    Rectangle {
        color: "blue"
        Layout.fillWidth: true
        height: 50
    }
    Rectangle {
    ...
    }
    Rectangle {
    ...
    }
}
通过这样做,您将授予
ColumnLayout
管理自己
高度的权限。它的高度将与其子对象的高度相关,并且不会拉伸到父对象

另一种方法是通过
anchor

Item {
  id: item1
}
Item {
  id: item2
  anchor.top: item1.bottom
  anchor.topMargin: 2 
}
Item {
  id: item3
  anchor.top: item2.bottom
  anchor.topMargin: 3 
}
如果您不需要在布局内部以特定方式管理项目的位置,则布局是一件好事


也有助于你检查这个问题,这不是问题的一个重复吗?“巴卡洛佐,我肯定会认为这是一个比公认的答案更好的解决办法。”米奇:嗯,还有一个重复的问题/答案和Grecko的完全相同的话(找不到)。所以,是的,这是“被接受的方式”。此外,在任何
版面
中都有
边距
对齐
属性,这似乎与回答“如果你不需要管理职位,版面是件好事”的说法相冲突。我认为你是对的,这是一个骗局,但另一个答案需要整理,我会在那里发表评论。这本书可能会重复用于提问者指定的用途,但仍然没有教他们正确使用专栏布局的方法。一旦掌握了QML中的布局,它将是一件方便且功能强大的事情。也许您还可以通过使用专栏布局来提供实现提问者目标的正确方法,以便对这两个选项进行比较。简单地说一种方法比另一种好是不对的