У меня есть Column
со многими элементами, которые переключаются с помощью Loader.active
.
Упрощенный сценарий:
Column {
id: column
Rectangle {
width: 100; height: 100; color: "white"
Column {
CheckBox { id: chkRed; text: "Red"; checked: true }
CheckBox { id: chkGreen; text: "Green"; checked: true }
CheckBox { id: chkBlue; text: "Blue"; checked: true }
}
}
Loader {
active: chkRed.checked
onActiveChanged: column.forceLayout()
sourceComponent: Rectangle {
width: 100; height: 100; color: "red"
}
}
Loader {
active: chkGreen.checked
onActiveChanged: column.forceLayout()
sourceComponent: Rectangle {
width: 100; height: 100; color: "green"
}
}
Loader {
active: chkBlue.checked
onActiveChanged: column.forceLayout()
sourceComponent: Rectangle {
width: 100; height: 100; color: "blue"
}
}
}
Проблема заключается в том, что при удалении элемента (через настройку Loader.active = false
), он остается «дырой» в пространстве, ранее занятом предметом, т. Е. Другие предметы не перемещаются.
Я пытался добавить onActiveChanged:
column.forceLayout()
каждому Loader
, но это не имеет никакого эффекта.
![](https://i.imgur.com/3K1AokG.gif)