1

私は 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を使用し、問題なく動作します。戻るボタンも正常に機能し、戻るときに一度に 1 つずつビューをポップします。

そのため、 から特定の人を選択すると、personListViewすぐに に戻りmoviesListView、中間の を逃したいと考えていmovieDetailViewます。ムービー リストには、選択した人物が含まれるムービーのみが表示されるようになっています。

この場合、別のものをプッシュすることができることはわかっていますmoviesListViewが、この例は一般的な問題を説明するために考案されています。

これを行うには、StackView pop()メソッドを呼び出して、戻りたい「アイテム」を指定することができます - だから私はこれを試しました:

property Component personListView: PersonListView {
    onPersonSelected: {
        stackView.pop(moviesListView)
    }
    onBack: stackView.pop()
}

これを実行すると、エラー メッセージは表示されません (したがって、それが存在することがわかっているとmovieListView思います) が、直前のビュー、つまりmovieDetailView. そのビューを見逃して、movieListView.

に戻ろうとしてmainMenuViewも、直前の に戻るだけmovieDetailViewです。

これは、私が自分のビューにどのように使用しているかに何らかの関係がComponentありますか?もしそうなら、どうすればよいですか?それとも何か問題がありますか?

4

1 に答える 1