从与其包含文件的文件不同的文件访问QML Stackview

时间:2019-02-08 04:43:23

标签: qt qml

我正在制作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: {
                    ...
                }

            }

        }
    }

}

1 个答案:

答案 0 :(得分:0)

使用attached StackView API

onDoubleClicked: {
    listaInventarios.StackView.view.push("Foo.qml")
}

请注意,您需要在呼叫前加上StackViewlistaInventarios管理的项目。