私のアプリのさまざまなモード/状態を実行しようとしています。たとえば、ゲームの状態になり、ハイスコアになり、メニューを2つ戻すメニューがあります。QMainWindowをスーパークラスとして使用しているアプリケーションを切り替える
私が試みた解決策は、最初にクラスMenu
とGame
を作成するためのスーパークラスとして自動生成クラスQMainWindow
を使用していました。 QMainWindow
では、後でQMainWindow
を作成し、Menu
またはGame
などで埋めてください。 QMainWindow.paintEvents()
にポリモルフィズムを呼び出す。
QMainWindow
を別のQMainWindow
に作成することはできませんが、この考えはstates
という別のサブクラスまたは既存のスーパー/サブクラスの間に存在するのでしょうか?
QMainWindow
の代わりにちょうどGame
を実行して、継承が正しく行われている可能性があります。しかし、Game
をQMainWindow
に作成して実行しようとすると、のコンストラクタでsigsegv
と表示されました(これは変更されず、空の場合は完全に細かいbby自体で実行されます)。私は自分自身を含むクラスで問題を解決したので、それも問題ではありません。
1)sigsegv(と残りの質問)の役に立つヘルプを得るために、いくつかの最小限のコードがあなたが試したことを示すのに役立ちます。 2)別のQMainWindowでQMainWindowを作成することはできますが、何も停止させることはありません。 3)複数のQMainWindowsはめったに必要ではなく、あなたの説明に基づいて、1つでも必要ない可能性があります。そのクラスには便利なデフォルトの機能とレイアウトがありますが、メニューバーやドッキングウィジェットなどを使用しない場合は、プレーンなQWidgetを拡張してアプリケーションのメインウィンドウとして使用する方がよいでしょう。 –
ありがとうございます。私は基本的にQMainWindow atmを持っていますが、すべてのメニューと余分な機能がないので、代わりにQWidgetを使用する方法を調べてみましょう。QMainWindow/QWidgetが受け取るものを受け取る 'State'クラスを持つことで、 'State'をサブクラスにすることなく、そのサブクラスに転送します。 – Zack