如何在QML中将RowLayout正确拆分为两个相等的字段?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在QML中将RowLayout正确拆分为两个相等的字段?相关的知识,希望对你有一定的参考价值。

这是一个简单的例子:

RowLayout {
   spacing: 5

   ColumnLayout {
      Text {
         Layout.fillWidth: true
         text: qsTr("Some text")
      }
      Rectangle {
         Layout.fillWidth: true
         height: 100
         color: "red"
      }
   }

   ColumnLayout {
      Text {
         Layout.fillWidth: true
         text: qsTr("Some more text")
      }
      Rectangle {
         Layout.fillWidth: true
         height: 50
         color: "red"
      }
   }
}

这将在widthRowLayout产生两个相等的字段,但为什么我必须为所有孩子指定Layout.fillWidth: true

以下是从Layout.fillWidth: true组件中删除Text的相同示例:

RowLayout {
   spacing: 5

   ColumnLayout {
      Text {
         text: qsTr("Some text")
      }
      Rectangle {
         Layout.fillWidth: true
         height: 100
         color: "red"
      }
   }

   ColumnLayout {
      Text {
         text: qsTr("Some more text")
      }
      Rectangle {
         Layout.fillWidth: true
         height: 50
         color: "red"
      }
   }
}

这里RowLayout的两个领域在width不会相同。

答案

您可以使用Layout.preferredWidth来设置行元素的大小(绝对或相对):

RowLayout {
    anchors.fill: parent
    spacing: 0
    Rectangle {
        Layout.preferredWidth: parent.width / 2
        Layout.fillHeight: true
        color: "green"
    }
    Rectangle {
        Layout.fillWidth: true
        Layout.fillHeight: true
        color: "yellow"
    }
}
另一答案

使用具有两列的GridLayout可能更好。

Rectangle {
    height: 20
    width: 300
    color: "green"
    GridLayout {
        anchors.fill: parent
        columns: 2
        Rectangle {
            Layout.fillWidth: true
            Layout.fillHeight: true
            color: "red"
        }
        Rectangle {
            Layout.fillWidth: true
            Layout.fillHeight: true
            color: "blue"
        }
    } //GridLayout
}

以上是关于如何在QML中将RowLayout正确拆分为两个相等的字段?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 QML 中链接两个滚动视图?

如何在pyspark中将文件名拆分为两个字符串?

如何在C#中将带逗号的字符串拆分为两个字符串[重复]

QT quick基础QML学习2

调整 QML 图像显示大小

如何在雪花sql中将单列拆分为多列[重复]