Как заставить QtQuick Column ретранслироваться? .forceLayout () не работает - PullRequest
0 голосов
/ 06 марта 2020

У меня есть 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, но это не имеет никакого эффекта.

...