我在 Android 上使用 Qt 5.2.1,我有一个主应用程序窗口,其代码如下(这个例子有点做作,但它准确地说明了我在做什么):
property Component mainMenuView: MainMenuView {
onMoviesSelected: {
stackView.push(moviesListView)
}
onSettingsSeleted: { }
onAboutSeleted: { }
}
property Component moviesListView: MovieListView {
onMovieSelected: {
stackView.push(movieDetailView)
}
onBack: stackView.pop()
}
property Component movieDetailView: MovieDetailView {
onCreditsSelected: {
stackView.push(personListView)
}
onBack: stackView.pop()
}
property Component personListView: PersonListView {
onPersonSelected: {
// Pending...
}
onBack: stackView.pop()
}
这个想法是你从菜单中选择,你看电影。你从电影中选择,你会看到电影的细节。您选择查看演职员表,您会看到演员和工作人员的名单。所有这些都使用 aStackView
并且工作得很好。后退按钮也可以正常工作,在您返回时一次弹出一个视图。
所以现在当我从 中选择一个特定的人时personListView
,我想直接跳回moviesListView
并且错过中间movieDetailView
。这个想法是电影列表现在只显示包含所选人物的电影。
我知道在这种情况下我可以,任何人都应该只推另一个moviesListView
- 但这个例子是为了描述一般问题。
为此,您可以调用该StackView
pop()
方法并提供您想要返回的“项目” - 所以我尝试了这个:
property Component personListView: PersonListView {
onPersonSelected: {
stackView.pop(moviesListView)
}
onBack: stackView.pop()
}
当它运行时,没有错误消息(所以我假设它知道这movieListView
是存在的东西),但它会弹回到前一个视图,即movieDetailView
. 它应该错过该视图并显示movieListView
.
如果我尝试弹回mainMenuView
,它仍然只是弹回前一个movieDetailView
。
这是否与我如何使用Component
我的观点有关,如果是,我应该怎么做,还是有其他问题?