Flow layout with centered content
Well there is no built-in way but I found a workaround to do it.
The idea is simple, since Flow
is already an Item
it has anchors.leftMargin
and anchors.rightMargin
. So if we can calculate, how many elements is inside the row of theFlow
then we are able to calculate the left and right margins. So we can center in.
Here it is a simple code,
Flow {
property int rowCount: parent.width / (elements.itemAt(0).width + spacing)
property int rowWidth: rowCount * elements.itemAt(0).width + (rowCount - 1) * spacing
property int mar: (parent.width - rowWidth) / 2
anchors {
fill: parent
leftMargin: mar
rightMargin: mar
}
spacing: 6
Repeater {
id: elements
model: 5
Rectangle {
color: "#aa6666"
width: 100; height: 100
}
}