1

快速控制 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
        }
    }
}

有人可以解释一下为什么变体 B 不能“工作”。我可以指定任何宽度/高度值,甚至只是删除它们 - 没有效果。变体 A (Layout.preferredWidth/Layout.preferredHeight) 工作正常。

变体 A:

在此处输入图像描述

变体 B:

在此处输入图像描述

4

1 回答 1

2

这些...Layout项目改变了他们孩子的尺寸。这就是他们的目的,并且记录了他们的行为。

根据行为的文档ColumnLayout Layout.preferredWidth是:

此属性保存布局中项目的首选宽度。如果首选宽度为 -1,它将被忽略,布局将使用implicitWidth 代替。默认值为 -1。

由于默认值为 -1,它将采用implicitWidth- 它没有写成“并使用宽度代替”。


如果您不想使用Layout,请不要使用Layout. 你可以Column取而代之。

于 2018-05-23T08:19:07.427 回答