如何从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 所在的主页。这个答案有帮助
我在 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 所在的主页。这个答案有帮助