質問

Qtでログインウィンドウを書いています。

ユーザーが[OK]をクリックすると、ログインウィンドウが閉じ、"サーバーに接続しています..."ウィジェット]を選択し、 connecttoserver メソッドが処理を完了したらメインウィンドウを開きます。

ただし、ウィジェットは、メインウィンドウが表示されている場合にのみ表示され、すぐに消えます(閉じることはできません!)

この問題を解決するにはどうすればよいですか

void LoginWindow::blah()
   {
   close();

   QWidget widget;
   widget.show();

   //calls to the "connecttoserver method"

   Main *main = new Main(student->getInfo()[0], student->getInfo()[1], student->getInfo()[2], view);
   main->show();
       }
   }
役に立ちましたか?

解決

QWidgetはスタック上で自動として宣言されているため、メソッドが戻ると破棄されます。代わりにヒープで宣言する必要があります。

QWidget *widget = new QWidget();
widget->show();

他のヒント

atomiceの回答に加えて、アプリケーションのquitOnLastWindowClosedを必ず設定してください。 falseまたはログインウィンドウを閉じてからメインウィンドウを開くまでの間にアプリケーションが終了します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top