我正在制作QML应用。我定义了main.qml,其中添加了StackView。我已经从main.qml加载了此“主” stackview上的页面。现在,我需要将内容推送到该stackview,但是要从另一个文件推送(更具体地说,是从我之前在此stackview推送的页面之一)。
这就是我所做的。
main.qml
ApplicationWindow {
id: window
visible: true
width: 320
height: 568
title: qsTr("Stack")
header: ToolBar {
contentHeight: toolButton.implicitHeight
ToolButton {
id: toolButton
text: stackView.depth > 1 ? "\u25C0" : ""
font.pixelSize: Qt.application.font.pixelSize * 1.6
onClicked: {
if ( stackView.depth > 1 ) {
stackView.pop( )
} else {
...
}
}
}
Label {
text: stackView.currentItem.title
anchors.centerIn: parent
}
}
StackView {
id: stackView
initialItem: "ListaInventarios.qml"
anchors.fill: parent
}
}
ListaInventarios.qml
Page {
width: parent.width
height: parent.height
id: listaInventarios
title: "Inventarios"
ListView {
id: lvInventarios
anchors.fill: parent
model: ListModel { ... }
delegate: Component {
Item {
width: parent.width
height: 40
Column {
Text { text: nombreInventario; font.bold: true }
Text { text: fuenteDatos }
}
MouseArea {
anchors.fill: parent
onClicked: { lvInventarios.currentIndex = index }
onDoubleClicked: {
// HERE I NEED TO PUSH A NEW PAGE ON "stackView" (from main.qml)
}
}
}
}
highlight: Rectangle {
color: "lightblue"
radius: 5
}
focus: true
}
footer: ToolBar {
id: barraInferior
contentHeight: toolButton.implicitHeight
Row {
anchors {
horizontalCenter: parent.horizontalCenter
verticalCenter: parent.verticalCenter
}
ToolButton {
text: "Nuevo"
width: window.width / 2
onClicked: {
...
}
}
ToolButton {
text: "Borrar"
width: window.width / 2
onClicked: {
...
}
}
}
}
}
答案 0 :(得分:0)
onDoubleClicked: {
listaInventarios.StackView.view.push("Foo.qml")
}
请注意,您需要在呼叫前加上StackView
:listaInventarios
管理的项目。