Хорошо, у вас есть проблемы с размерами. Вы определяете ширину GridLayout
как 200px, но также определяете размеры для элементов, например, идентификатор первой строки 60 + 25 = 85, а не 200. Таким образом, макет должен как-то это исправить. Я думаю, он растягивает клетки в зависимости от размеров предметов.
Таким образом, вы должны установить фиксированный размер для первого столбца для всех макетов. Оставшееся место во втором столбце вы можете обернуть с помощью элемента:
Column {
anchors.fill: parent
anchors.margins: 20
GroupBox {
id: box1
title: "group 1"
width: parent.width
GridLayout {
width: parent.width
columns: 2
Rectangle { implicitHeight: 40; color: "orange"; Layout.preferredWidth: 250 }
Item {
Layout.fillWidth: true
implicitHeight: 40;
Rectangle { implicitHeight: 40; color: "lightgreen"; implicitWidth: 180 }
}
Rectangle { implicitHeight: 40; color: "orange"; Layout.preferredWidth: 250 }
Item {
Layout.fillWidth: true
implicitHeight: 40;
Rectangle { implicitHeight: 40; color: "lightgreen"; implicitWidth: 60 }
}
}
}
GroupBox {
id: box2
title: "group 2"
width: parent.width
GridLayout {
width: parent.width
columns: 2
Rectangle { implicitHeight: 40; color: "orange"; Layout.preferredWidth: 250 }
Item {
Layout.fillWidth: true
implicitHeight: 40;
Rectangle { implicitHeight: 40; color: "lightgreen"; implicitWidth: 80 }
}
Rectangle { implicitHeight: 40; color: "orange"; Layout.preferredWidth: 250 }
Item {
Layout.fillWidth: true
implicitHeight: 40;
Rectangle { implicitHeight: 40; color: "lightgreen"; implicitWidth: 120 }
}
}
}
}