我有項的行當窗口寬度獲取對於一行中的顯示的所有項目太小,這應堆作爲顯示在下面的草圖:流佈局與中心的內容
的Flow
組件堆的項目,但他們不是中心,但排列在左側或右側:
Flow {
Item {}
Item {}
Item {}
Item {}
Item {}
}
是否有QML內置的方式,使中心的流量?
我有項的行當窗口寬度獲取對於一行中的顯示的所有項目太小,這應堆作爲顯示在下面的草圖:流佈局與中心的內容
的Flow
組件堆的項目,但他們不是中心,但排列在左側或右側:
Flow {
Item {}
Item {}
Item {}
Item {}
Item {}
}
是否有QML內置的方式,使中心的流量?
那麼沒有內置的方式,但我找到了解決辦法。
這個想法很簡單,因爲Flow
已經是Item
它有anchors.leftMargin
和anchors.rightMargin
。因此,如果我們可以計算,Flow
的行內有多少元素,那麼我們可以計算左右邊距。因此,我們可以在中心。
這是一個簡單的代碼,
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
}
}
Qml中是否有一種內置方式來使流程居中?
號
你可以做一下數學計算來檢查,如果最後「行」在Flow
是不是滿的,然後添加一些墊片項目在該行中的項目的左側和右側。可能你必須使用一些C++;即QQuickItem::stackBefore()
和QQuickItem::stackAfter()
將墊片項目重新放置在Flow
的子項列表中。每個間隔物的寬度將是該行內剩餘空間的一半。這並不漂亮,但它應該工作。
我不認爲有任何內置的方式來這樣做。你必須做出自己的元素。