我继承了一些使用 qt 5.9
和 qml
来设计一些用户界面的代码 . 该接口由 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 . 然后,下一个要推送的项目将是这个虚拟组件,它将重定向到 page2
或 page3
. 理想情况下,这将以静默方式完成,即用户只会看到动画过渡到正确的页面
我想要它的原因是因为我继承的导航结构基本上解析XML以创建DAG并使用它来创建工作流 . 我很容易添加这种基本上只是重定向的虚拟工作流项目 .