Я использую Qt 5.2.1 на Android, и у меня есть главное окно приложения с кодом, как показано ниже (пример немного надуманный, но он точно показывает, что я делаю):
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()
}
По идее, вы выбираете из меню, вы смотрите фильмы. Вы выбираете из фильмов, вы видите детали фильма. Вы выбираете для просмотра титры, вы видите список актеров и съемочной группы. Все это использует StackView
и отлично работает. Кнопка «Назад» также работает нормально, поочередно открывая просмотры при возврате.
Итак, теперь, когда я выбираю конкретного человека из personListView
, я хочу сразу вернуться к moviesListView
и пропустить промежуточное movieDetailView
. Идея состоит в том, что в списке фильмов теперь отображаются только фильмы, в которых есть выбранный человек.
Я знаю, что мог бы, а может, и должен был бы просто нажать еще moviesListView
в этом случае, но этот пример создан для описания общей проблемы.
Для этого вы можете вызвать метод StackView
pop()
и указать «элемент», к которому вы хотите вернуться - поэтому я попробовал это:
property Component personListView: PersonListView {
onPersonSelected: {
stackView.pop(moviesListView)
}
onBack: stackView.pop()
}
Когда это запускается, сообщений об ошибках нет (поэтому я предполагаю, что он знает, что movieListView
- это что-то, что существует), но он возвращается к непосредственно предыдущему представлению, то есть к movieDetailView
. Он должен пропустить этот вид и показать movieListView
.
Если я попытаюсь вернуться к mainMenuView
, он все равно просто вернется к непосредственно предыдущему movieDetailView
.
Связано ли это как-то с тем, как я использую Component
для своих представлений, и если да, что мне делать, или что-то еще не так?