我继承了一些使用 qt 5.9qml 来设计一些用户界面的代码 . 该接口由 pages 中描述的一系列 pages 组成 . 现在,这个工作流程本身在XML文件中描述,它本质上是线性的,即一个页面流向另一个页面 .

现在,我有一个要求,我需要在运行时检查一些东西,我必须动态更改工作流程,即工作流程中的下一页是根据某些条件决定的 . 现在,我不想改变现有的结构,所以我所想的就像一个页面,它只是检查一些条件,然后加载正确的页面 .

所以,说我有这三页

// Page1.qml
import QtQuick 1.0

Rectangle {
    id: page1
    width: 500; height: 200
    color: "lightgray"

    Text {
        id: t1
        text: "1"
        y: 30
        font.pointSize: 24; font.bold: true
    }
}

// Page2.qml
import QtQuick 1.0

Rectangle {
    id: page2
    width: 500; height: 200
    color: "lightgray"

    Text {
        id: t2
        text: "2"
        y: 30
        font.pointSize: 24; font.bold: true
    }
}

// Page3.qml
import QtQuick 1.0

Rectangle {
    id: page3
    width: 500; height: 200
    color: "lightgray"

    Text {
        id: t3
        text: "3"
        y: 30
        font.pointSize: 24; font.bold: true
    }
}

现在,我有一个StackView,如:

StackView {
        id: stackView
        anchors.fill: parent
}

现在我可以有一个中间组件或堆栈视图可推送的QML项目,它基本上可以重定向到另一个页面 . 所以基本上如果我把 page1 推到了stackview . 然后,下一个要推送的项目将是这个虚拟组件,它将重定向到 page2page3 . 理想情况下,这将以静默方式完成,即用户只会看到动画过渡到正确的页面

我想要它的原因是因为我继承的导航结构基本上解析XML以创建DAG并使用它来创建工作流 . 我很容易添加这种基本上只是重定向的虚拟工作流项目 .