Qt 如何在Gridlayout中定位项目

Qt 如何在Gridlayout中定位项目,qt,layout,qml,Qt,Layout,Qml,我正在将Image对象动态添加到qt中QML文件中的GridLayout。我想定位图像项,使每个新图像项位于前一个图像项的右侧,如果该行中没有位置,则将其直接放置到下一行。这正是我输入这个问题的方式,即字母是我的图像项,文本框是布局 然而,结果如下: 布局在项目之间留出空间,如屏幕截图所示。我已经通读了gridlayout的属性,并尝试了许多组合,但没有找到正确的组合。以下是我到目前为止设置的属性: GridLayout { id: myLayout anchors.fill:

我正在将
Image
对象动态添加到
qt
QML
文件中的
GridLayout
。我想定位图像项,使每个新图像项位于前一个图像项的右侧,如果该行中没有位置,则将其直接放置到下一行。这正是我输入这个问题的方式,即字母是我的图像项,文本框是布局

然而,结果如下:

布局在项目之间留出空间,如屏幕截图所示。我已经通读了gridlayout的属性,并尝试了许多组合,但没有找到正确的组合。以下是我到目前为止设置的属性:

GridLayout {
    id: myLayout
    anchors.fill: parent

    columnSpacing: preferredColumnSpacing
    rowSpacing: preferredRowSpacing

    Component {
        id: myImageComponent
        Image {
            visible: true
            Layout.alignment: (Qt.AlignLeft | Qt.AlignTop)
            Layout.preferredWidth: preferredImageWidth
            Layout.preferredHeight: preferredImageHeight
        }
    }
}
哪种修改使我具有预期的行为


编辑:在上面的屏幕截图中,布局有9列,4行,但有17个图像项。

您只需
锚定。填充
网格布局
:间距对布局不严格-请参阅。考虑使用<代码>网格或不同的锚定或使用填充符(如链接答案)。比如?这里有几个约束条件。我的例子很简单。从开发人员的角度讲,概括起来就不会那么简单了,尤其是在角落案例中。我不是在为任何人辩护,只是猜测而已。当我不得不创建一个常规的
GridView
时,我也对自己提出了同样的问题。无论如何,如果将代理作为根添加到动态创建的对象中,它应该可以工作。没问题,我们在这里互相帮助。:)进一步调查可能会找到解决办法。例如,您是否有严格的行/列数,还是应该根据实例项的数量进行排列?根据结果,您还可以考虑一个对象模型的动态<代码> GRIDVIEW < /代码>。我讨厌这样的解决方案,但它可能会产生有趣的结果。无论如何,如果你改变主意,请随时回信。快乐编码!