如何从Qt中从stackview打开的页面打开新页面

如何从Qt中从stackview打开的页面打开新页面,qt,qml,qtquickcontrols2,stackview,Qt,Qml,Qtquickcontrols2,Stackview,我在main.qml中有StackView。我使用StackView从main.qml推送了menu.qml文件。我正在尝试访问menu.qml文件中的stackview以打开新项目。是否有一种方法可以使用stackview推送具有属性的组件/项目?我的组件基本上是用于不同视图的.qml文件 ApplicationWindow { id: settingsWindow StackView { id: stack initialI

我在main.qml中有StackView。我使用StackView从main.qml推送了menu.qml文件。我正在尝试访问menu.qml文件中的stackview以打开新项目。是否有一种方法可以使用stackview推送具有属性的组件/项目?我的组件基本上是用于不同视图的.qml文件

 ApplicationWindow {
id: settingsWindow

        StackView {
            id: stack
            initialItem: view

            Component {
                id: view

                MouseArea {

                    onClicked: stack.push(view)
                }
            }
        }

      Button{
        id: button1
        onClicked: {
                stack.pop(StackView.Immediate)
                stack.push (Qt.resolvedUrl("menu.qml"))
        }
       }
    }
menu.qml

 Item {
 Button{
 id: button1  
 onclicked : {  stack.push (Qt.resolvedUrl("new.qml"))  }
    }
   }

假设您的意思是要使用推送的页面访问StackView对象

StackView有一个附加属性,可用于获取对拥有该页面的视图的引用

长话短说,在Menu.qml中,您可以执行以下操作:

Item {  
    id: root                                                               
    Button {                                                            
        id: button1                                                    

        onClicked: { root.StackView.view.push(Qt.resolvedUrl("new.qml")) } 
    }                                                                  
}        

最终在StackView中创建每个页面作为组件属性,然后使用信号推送每个页面。将信号添加到每个页面,并将其连接到stackview所在的主页。这个答案有帮助

StackView.view似乎为空/空。这就是我尝试时抛出的错误。您需要使用正确的id对其进行限定。有关示例,请参阅答案。在这种情况下,它将是根项目(需要提供一个id)。我已经更新了答案。