我们需要开发一个QtQuick项目,我们有大约100个屏幕 .
我曾尝试为导航制作一个演示项目,按钮点击时有三个屏幕 . 我在页面之间的导航中使用了“States”的概念 . 最初我尝试使用'Loader',但加载器无法保留以前的页面状态,它在导航过程中重新加载整个页面 .
下面是main.qml的代码片段
// import QtQuick 1.0 // to target S60 5th Edition or Maemo 5
import QtQuick 1.1
Rectangle {
id:main_rectangle
width: 360
height: 640
Page1{
id:page1
}
Page2{
id:page2
}
Page3{
id:page3
}
states: [
State {
name: "page2"
PropertyChanges { target: page3; visible:false; }
PropertyChanges { target: page1; visible:false; }
PropertyChanges { target: page2; visible:true; }
},
State {
name: "page1"
PropertyChanges { target: page3; visible:false; }
PropertyChanges { target: page2; visible:false; }
PropertyChanges { target: page1; visible:true; }
},
State {
name: "page3"
PropertyChanges { target: page1; visible:false; }
PropertyChanges { target: page2; visible:false; }
PropertyChanges { target: page3; visible:true; }
}
]
}
这适用于具有三个屏幕的小POC,但是不可能定义100个屏幕的状态 .
从设计方面我们总结出制作C控制器,我们控制各种页面的状态和可见性 .
需要有关如何在C中实现“状态”逻辑的建议 .
2 回答
这是普通QML中最简单的解决方案,使用可配置的页面列表(如模型),Repeater Loader项目在启动时不加载所有内容(懒惰的实例),并且在隐藏页面后不会销毁页面(如果我们不需要重新加载它回到它):
希望能帮助到你 !
我建议使用Qt Quick Components的StackView . Here是它的文档 .