Как я могу создать QML GridLayout с элементами пропорциональных размеров?

Потенциально связаны:https://stackoverflow.com/a/30860285/3363018

Я пытался создать макет QML с элементами, которые охватывают переменное число строк и столбцов. Так, например, прямоугольник, который охватывает две строки и четыре столбца, один справа от него, который охватывает одну строку и два столбца, и один внизу, который охватывает три строки и пять столбцов. Типичная попытка создания этого ниже:

import QtQuick 2.5
import QtQuick.Layouts 1.2
import QtQuick.Controls 1.4

ApplicationWindow {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    GridLayout {
        anchors.fill: parent

        columns: 5
        rows: 2

        Rectangle {
            Layout.column: 0
            Layout.columnSpan: 4
            Layout.row: 0
            Layout.rowSpan: 2

            Layout.fillHeight: true
            Layout.fillWidth: true

            color: "red"
        }

        Rectangle {
            Layout.column: 4
            Layout.columnSpan: 1
            Layout.row: 0
            Layout.rowSpan: 2

            Layout.fillHeight: true
            Layout.fillWidth: true

            color: "green"
        }

        Rectangle {
            Layout.column: 0
            Layout.columnSpan: 5
            Layout.row: 2
            Layout.rowSpan: 3

            Layout.fillHeight: true
            Layout.fillWidth: true

            color: "blue"
        }
    }
}

что приводит к этому:

Как видите, Layout.rowSpan и Layout.columnspan, похоже, не работают. Вместо этого верхние два ряда, кажется, занимают 1: 1, а не 4: 1, и верхняя часть против нижней части - 1: 1, а не 2: 3. Я подозреваю, что это связано с Layout.fillHeight и Layout.fillWidth.Документация состояния:

Если это свойство имеет значение true, элемент будет максимально широким при соблюдении данных ограничений.

но я не уверен, что "данные ограничения" в этом контексте. Я надеялся, что это будет включать в себя диапазон строк и столбцов, но это не так.

Я мог бы, вероятно, напрямую рассчитать ширину и высоту элементов (или, может быть, Layout.preferredWidth и Layout.preferredHeight), но это, похоже, сделает Layout.rowSpan и Layout.columnSpan совершенно лишними. Есть ли способ автоматически рассчитать высоту на основе строк и столбцов сетки?

Ответы на вопрос(1)

Ваш ответ на вопрос