快速控制2,Qt 5.10。
我基于ListView
项创建了表控件。
使用此组件显示其中一列:
import QtQuick 2.10
import QtQuick.Controls 2.3
import QtQuick.Layouts 1.3
Item
{
id: root
implicitHeight: item1.implicitHeight
ColumnLayout
{
id: item1
visible: !model.finished
width: parent.width
RowLayout
{
Label
{
text: "38%"
Layout.alignment: Qt.AlignLeft
}
Label
{
text: "Paused"
Layout.alignment: Qt.AlignRight
}
}
ProgressBar
{
from: 0; to: 100; value: 40
// Variant A
/*Layout.preferredWidth: 30
Layout.preferredHeight: 10*/
// Variant B
width: 30
height: 10
}
}
}
有人可以解释一下为什么Variant B没有"工作"。我可以指定任何宽度/高度值,甚至只是删除它们 - 没有效果。变体A(Layout.preferredWidth / Layout.preferredHeight)工作正常。
变式A:
变式B:
答案 0 :(得分:1)
...Layout
项会改变孩子的维度。这是他们的目的,并记录了行为。
根据ColumnLayout
Layout.preferredWidth
的文档,行为是:
此属性保存布局中项目的首选宽度。如果首选宽度为-1,则将忽略该布局,而布局将使用implicitWidth。默认值为-1。
由于默认值为-1,因此需要implicitWidth
- 它不会被写入"并使用宽度而不是#34;。
如果您不想使用Layout
请勿使用Layout
。您可以改为Column
。