QML Swipeview динамически добавлять и удалять страницы - PullRequest
0 голосов
/ 12 марта 2020

Я вижу приведенный ниже вопрос.

QML Swipeview динамически добавляет страницы

Но, когда я удалил ItemItem (B) и addItem (B).

"элемент B" не был добавлен.

SwipeView {
    id: swipeView
    anchors.fill: parent
    currentIndex: 0

    Component.onCompleted: {
        addItem(A)
        addItem(B)
        removeItem(B)
        addItem(B)
    }
}

PageIndicator {
    id: indicator
    count: {
            console.log("swipeView.count : ", swipeView.count)
            return swipeView.count
    }
    currentIndex: swipeView.currentIndex
    anchors.bottom: swipeView.bottom
    anchors.horizontalCenter: parent.horizontalCenter
}

Результат console.log ("swipeView.count:", swipeView.count)

qml: swipeView.count: 0

qml: swipeView.count: 1

qml: swipeView.count: 2

qml: swipeView.count: 1

qml: swipeView.count : 2

qml: swipeView.count: 1

То есть, если элемент, который был удален, добавляется снова, элемент не добавляется.

Как я могу исправить это?

1 Ответ

0 голосов
/ 12 марта 2020

Как указано в документации , removeItem уничтожит предмет. Так, B будет нулевым, когда вы позвоните addItem во второй раз.

Вы должны использовать takeItem вместо:

Window {
    id: window
    width: 400
    height: 400
    visible: true

    Text {
        id: a
        text: "A"
    }

    Text {
        id: b
        text: "B"
    }

    SwipeView {
        id: swipeView
        anchors.fill: parent
        currentIndex: 0

        Component.onCompleted: {
            addItem(a)
            addItem(b)
            takeItem(1);
            addItem(b)
        }
    }

    PageIndicator {
        id: indicator
        count: {
                console.log("swipeView.count : ", swipeView.count)
                return swipeView.count
        }
        currentIndex: swipeView.currentIndex
        anchors.bottom: swipeView.bottom
        anchors.horizontalCenter: parent.horizontalCenter
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...