qml 画页迁移

想要达到画页迁移的效果,有很多方法:比如通过loader将qml加载,然后,或者将visible置为false.或者将souce变成空字符串。或者通过动态创建对象,都可以,但是,放到我们实机上这一切都不好使了,这个是为什么?报错都是在将要迁移到子画页时,说无法找到子画页的id,我明明在main.qml里都定义了,这个真的是不清楚。qt creater都没有问题的。后来qml有个控件叫StackView,这个控件就好使。

        StackView {
            id: stack
            anchors.centerIn: parent
             parent.width
            height: parent.height

            Loader{
                id:page_loader_main_menu
                 parent.width
                height: 600
                anchors.right: parent.right
                anchors.top: parent.top
                source: "Main_menu.qml"
            }
        }
        Component{
            id:main_menu_search_page
                Loader{
                    id:page_loader_main_menu_search
                     main_menu_rec.width
                    height: 600
                    source :"Search_Hot.qml"
                }
        }

        Mini_Player{}
        Connections{
            target: main_menu_control_observer
            onMain_menu_lift_search_hot:{
                stack.push(main_menu_search_page)
                console.log("depth:",stack.depth)
            }
            onSearch_hot_lift_main_menu:{
                console.log("return_depth:",stack.depth)
                if(stack.depth === 1) {stack.clear()}
            }
        }
    }

到这里还没什么太大的问题,反复用C++与qml交互。是因为子画页不识别id,这个让人很无语。现在搞的这么麻烦。当画页迁移到Search_Hot.qml后,居然还能点击根画页的button,导致能够不断的入栈迁移画页。

Search_Hot.qml中,最上面的位置加入以下代码,防止鼠标穿透

    MouseArea{
        anchors.fill:parent
        enabled:true
        onClicked: {}
        onPressed: {}
        onReleased: {}
    }

不过为什么到实机的时候,动态创建对象都不好用了呢?这个谁能给我解答下?

原文地址:https://www.cnblogs.com/wxmwanggood/p/11003591.html