Возврат из дочернего qml в основной - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть несколько QML файлов, основной - тот, который открывает ApplicationWindow, когда я пытаюсь вернуться от дочернего QML к основному, новое окно открывается снова!как я могу предотвратить это?Я думал, что включение флага у ребенка QML, но могут быть и другие способы!Я пытался stackview в QML

Есть ли способ предотвратить открытие новой страницы, когда я вернусь на главную QML?

1 Ответ

0 голосов
/ 20 декабря 2018

создайте загрузчик в главном окне и вызывайте каждую страницу в этот загрузчик, когда вам когда-либо понадобится изменить страницу, просто измените источник загрузчика

Window {
    Loader{
        id:myLoader
        anchors.fill: parent
        source: "LoginPage.qml"
    }
    Connections{
        target: myLoader.item
        onBack_clicked:{
            loginid = ""
            myLoader.source = "LoginPage.qml"
        }
        onSetting_clicked:{
            myLoader.source = "Setting.qml"
        }
    }
}

и для дочерних qml-файлов: (для меня Setting.qml)

Item {
signal back_clicked()
Button {
                    id: button1
                    anchors.right: parent.right
                    anchors.rightMargin: 15
                    onClicked: {
                        back_clicked()
                    }
       }
}

, но если вы не хотите уничтожить старую страницу, используйте SwipeView или StackView:

SwipeView {
    id: swipeView
    clip: true
    currentIndex: 0
    Item{
       id:firstPage
       clip:true
       //your page
    }
    Item{
       id:secondPage
       clip:true
       //your page
    }
}

, а для изменения страниц просто измените currentIndex

swipeView.currentIndex = 1

ОБНОВЛЕНИЕ:

StackView {
    id: stackView

    initialItem: one
}
Component {
    id: one
    Item{//your first page }
}

Component {
    id: two
    Item{//your second page }
}

и для перетаскивания своих страниц:

stackView.push({ item: two})
//or
stackView.push("MySecondView.qml")

, чтобы вернуться на старую или главную страницу, просто вставьте его:

stackView.pop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...