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

How to open new page from page which is open from stackview in Qt

我在 main.qml.I 中使用 StackView 从 main.qml 推送了 menu.qml 文件。我正在尝试访问 menu.qml 文件中的堆栈视图以打开新项目。有没有一种方法可以使用 stackview 推送 component/items 属性?我的组件是 basically.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")) } 
    }                                                                  
}        

https://doc.qt.io/qt-5/qml-qtquick-controls2-stackview.html#view-attached-prop

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