如何从Qt中从stackview打开的页面打开新页面
我在main.qml中有StackView。我使用StackView从main.qml推送了menu.qml文件。我正在尝试访问menu.qml文件中的stackview以打开新项目。是否有一种方法可以使用stackview推送具有属性的组件/项目?我的组件基本上是用于不同视图的.qml文件如何从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
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)。我已经更新了答案。