类似于具有水平流的ListView(直到它达到总宽度,然后它继续在下一行)。
ListView {
anchors.fill: parent
layoutDirection: Qt.Horizontal
width: container.width; height: implicitHeight
model: ListModel{ id: contactListModel }
delegate: contactComponent
}
上述代码的问题在于它没有考虑宽度的限制。
或者像GridLayout一样,但没有定义列数或行数。
Flickable {
anchors.fill: parent
contentHeight: grid.height
contentWidth: container.width
GridLayout {
id: grid
columns: 3
width: container.width; height: implicitHeight
columnSpacing: 0; rowSpacing: 0
Repeater {
model: ListModel{ id: contactListModel }
delegate: contactComponent
}
}
}
这里的问题是,如果我没有定义多个列或行,那么无论总宽度如何,它都会继续水平添加项目。而且,间距......
谢谢,
答案 0 :(得分:3)
Flow
就是您所需要的。
如果你想让它变得可以被scrolable,你可以把它包裹在Flickable
中(就像你对GridLayout
所做的那样)。
Flickable {
anchors.fill: parent
contentWidth: width
contentHeight: flow.implicitHeight
Flow {
id: flow
width: parent.width
spacing: 5
Repeater {
model: ListModel{ id: contactListModel }
delegate: contactComponent
}
}
}
答案 1 :(得分:0)
您可以尝试QML Flow类型。我不认为基于Widget的系统有这个等价的类。 http://doc.qt.io/qt-5/qml-qtquick-flow.html#details