从儿童QML返回到主

Return from child qml to main one

本文关键字:返回 QML      更新时间:2023-10-16

我有几个 QML文件,主要文件是每当我尝试从CHILD QML返回到Main时,都会打开ApplicationWindow,然后再次打开新窗口!我该如何阻止这样做?我认为可以在QML中启用旗帜,但是可能还有其他方法!我尝试了QML中的stackview

当我回到主QML时,有什么方法可以防止打开新页面?

在主窗口中创建一个加载程序,并在需要更改页面时将每个页面调用到该加载程序中,只需更改加载程序的源

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文件:(对我setter.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()