2016-10-28 2 views
0

私はUIフォームで次の2つのクラスを持っています。qtの1つのクラスで2つのUIフォームを切り替えることはできますか?

  1. ログインウインドウ
  2. メインウィンドウ

今、私は私がログインウインドウでプッシュボタンをクリックして、新しいウィンドウがメインウィンドウでをポップアップするメインウィンドウに移動する必要がある場合。

void LoginWindow::on_pbLogin_clicked() 
{ 
    MainWindow *mainW = new MainWindow; 
    mainW->show(); 
} 

私が持っているのは、mainWindowの内容をloginWindowで取得することです。 ことが可能ですメインウィンドウは、その内容を表示するために独自のウィンドウを作成せずに、私は、同じウィンドウにログインウインドウからメインウィンドウへ/移動を切り替えることができ、私はqstackedwidgetに

を使用したくありませんか?はいの場合、どうしたらいいですか?

+0

*同じウィンドウ*に2つの異なるインターフェイスを表示するか、*新しいウィンドウ*をポップアップして元のウィンドウを非表示にしますか?なぜあなたは 'QStackedWIdget'を使いたくないのですか? –

+0

要件に基づいてコントロールを非表示にします。 「メインウィンドウ」は、ログインの詳細が必要なときに制御します。メインウィンドウが必要なときに、メインウィンドウコントロールを表示します。動的にサイズを変更することができます。あなたが隠れているので、コントロールは重複することもできます。 – Naidu

+0

QMainWindowはちょっと特殊です。たぶん2つのウィンドウを持っているだけで、2番目のウィンドウを1番目と同じジオメトリにすると、ユーザーは変更に気付かないかもしれません。あるいは、ログインビューをthr QMainWindowの中央ウィジェットとして実装し、ログイン状態のドック、メニューなどを非表示にすることもできます。 – hyde

答えて

0

我々は(それ以外の場合は、単にコンテンツスイッチではないでしょう)LoginWindowMainWindowが両方QMainWindowから派生していることを前提としていた場合は、QStackedWidgetを使用するよりも、他の一つの選択肢は2つのフォームクラスはQWidgetおよび使用から派生させることです単一のQMainWindowインスタンスのcentralWidgetのいずれかです。

+0

それは働いています。しかし、mainWindowからloginWindowに戻るにはどうすればいいですか? loginWindowはQMainWindowから得られ、 mainWindowはQWidgetから派生したものです。 可能ですか? –

+0

私が言ったように、 'QWidget'から両方のコンテンツクラスを派生させ、同じQMainWindowの中央ウィジェットとして、一度に1つずつ使用します。 正しい内容で 'setCentralWidget'を呼び出すだけで前後に切り替えることができます。両方のコンテンツウィジェットを保持するか、現在使用されていないウィジェットを常に削除してスイッチ上に再作成することができます。 –

関連する問題