Я пытаюсь изучить QML, и в данный момент у меня возникли проблемы с пониманием rowSpan и columnSpan, извините, если этот вопрос может показаться некоторым из вас глупым.
ЧТО Я УЗНАЛ:
Поправьте меня, если я ошибаюсь, но в GridLayout должно быть так:
- Layout.row - указывает линию, в которой расположен объект;
- Layout.column - указывает столбец, в котором находится объект;
- Layout.rowSpan - указывает на сколько строк должен растягиваться объект;
- Layout.columnSpan - указывает на сколько столбцов должен быть растянут объект;
ЧТО Я ПЫТАЮСЬ СДЕЛАТЬ:
Что ж, в этом случае я пытаюсь воссоздать этот макет здесь
Этот макет, по идее, должен иметь следующее:
- Фактический GridLayout должен состоять из 24 столбцов и 9 строк.
- Форма КРАСНАЯ должна быть в -> col 0, row 1 -> colSpan 3, rowSpan 7
- Форма СИНИЙ должна быть в -> столбец 3, строка 1 -> colSpan 8, rowSpan 1
- Форма ФИОЛЕТОВЫЙ должна быть в -> столбец 3, строка 4 -> colSpan 6, rowSpan 3
По крайней мере, я до сих пор так понял.
ПРОБЛЕМА:
После того, как я закодировал QML с помощью col, row соответственно, а также colSpan и rowSpan, я получил это вместо этого.
МОЙ КОД:
import QtQuick 2.5
import QtQuick.Controls 1.4
import QtQuick.Layouts 1.1
Item {
width: 1366
height: 512
GridLayout {
id: grid
columns: 24
rows: 9
anchors.fill: parent
Rectangle {
property var rowSpan: 7
property var columSpan: 3
Layout.column: 0
Layout.row: 1
Layout.preferredWidth: (parent.width / parent.columns) * columSpan
Layout.preferredHeight: (parent.height / parent.rows) * rowSpan
Layout.columnSpan: columSpan
Layout.rowSpan: rowSpan
color: "red"
}
Rectangle {
property var rowSpan: 1
property var columSpan: 8
Layout.column: 3
Layout.row: 1
Layout.preferredWidth: (parent.width / parent.columns) * columSpan
Layout.preferredHeight: (parent.height / parent.rows) * rowSpan
Layout.columnSpan: columSpan
Layout.rowSpan: rowSpan
color: "blue"
}
Rectangle {
property var rowSpan: 3
property var columSpan: 6
Layout.column: 4
Layout.row: 3
Layout.preferredWidth: (parent.width / parent.columns) * columSpan
Layout.preferredHeight: (parent.height / parent.rows) * rowSpan
Layout.columnSpan: columSpan
Layout.rowSpan: rowSpan
color: "purple"
}
}
}
Может ли кто-нибудь объяснить мне, что я делаю неправильно или с какой частью GridLayout я не понял?