Как я могу создать 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 совершенно лишними. Есть ли способ автоматически рассчитать высоту на основе строк и столбцов сетки?