在Qt 5.9的QML应用程序中,我想在Flow中显示具有固定宽度的矩形。为了保持布局居中,我尝试动态调整其填充。要计算正确的值,尽管我需要知道当前的列数,例如colCount。有没有办法得到它?
下面是我想使用伪变量colCount执行的操作的代码示例:
import QtQuick 2.7
import QtQuick.Controls 2.2
import QtQuick.Layouts 1.3
ApplicationWindow {
visible: true
width: 800
height: 600
title: qsTr("Example")
Flow {
anchors.fill: parent
leftPadding: parent.width > 200*colCount ? 0.5*(parent.width - 200*colCount) : 0
spacing: 0
Rectangle {
width: 200
height: 200
color: "red"
}
Rectangle {
width: 200
height: 200
color: "blue"
}
}
}
发布:)的魔力在我设法弄清楚这一点后不久,我在这里为可能需要它的人发布解决方案。
有一个属性 childrenRect.width 继承自Item可以派上用场。因此,列数 colCount可以计算为childrenRect.width / w
,其中w是一个子项的宽度(对于FLOW的所有子项来说,它应该相同才能正常工作)。
在问题的代码示例中:
import QtQuick 2.7
import QtQuick.Controls 2.2
import QtQuick.Layouts 1.3
ApplicationWindow {
visible: true
width: 800
height: 600
title: qsTr("Example")
Flow {
anchors.fill: parent
leftPadding: parent.width > childrenRect.width ? 0.5*(parent.width - childrenRect.width) : 0
spacing: 0
Rectangle {
width: 200
height: 200
color: "red"
}
Rectangle {
width: 200
height: 200
color: "blue"
}
}
}