从孩子qml返回主要孩子

时间:2018-12-18 06:30:35

标签: c++ qt qml

我有几个QML文件,主文件是当我尝试从子级ApplicationWindow返回主文件时打开QML的文件,再次打开新窗口! 如何防止这样做? 我以为在子QML中启用标志,但是可能还有其他方法! 我在stackview

中尝试了QML

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

1 个答案:

答案 0 :(得分:0)

在主窗口中创建一个加载器,并在需要更改页面时调用该加载器中的每个页面,只需更改加载器的源代码

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()