title: Application crashes when opening a window qt
body: <p>I would like to create a program that shows a question with some answers to the user. My application uses 3 forms: Main Menu, Login Menu and Game Form, and all inherit from an abstract class called Form; I do this because it allows the use of the factory method, which it create a new window when a signal GoFw is emitted by the actual form.</p>
  
  <p>The "loop" that shows the windows is the following: MainMenu -> LoginMenu -> GameForm -> MainMenu...
  The problem is when the game is finished (e.g. the count of remaining questions is zero) the GameForm emits the signal GoFw but the application crashes after the show() method (I could see a white window with no buttons before the crash).
  The debugger show a messagebox with this error:</p>
  
  <pre><code>The inferior stopped because it triggered an exception.
  
  Stopped in thread 0 by: Exception at 0x723f7b93, code: 0xc0000005: read access
  violation at: 0x0, flags=0x0 (first chance).
  </code></pre>
  
  <p>and QtCreator opens a file called: Disassembler(QHash::findNode)</p>
  
  <p>This is the code of the factory method:</p>
  
  <pre><code>void FormFactory::Init(int formType)
  {
      ///if formType == 1 MainMenu is showed
      if(formType == MAIN_MENU_TYPE)
      {
          //inizializza il puntatore
          actualForm = new MainMenu();
      }
      ///else if is == 2 show ProfileMenu
      else if(formType == PROFILE_MENU_TYPE)
      {
          actualForm = new LoginMenu();
      }
      ///else if == 3 show GameForm
      else if(formType == GAME_FORM_TYPE)
      {
          actualForm = new GameForm();
      }
      ///else if there is no match launch an exception
      else
          throw UnexpectedIdEx();
  
      connect(actualForm, SIGNAL(GoFw(int)), this, SLOT(DisplayForm(int)));
  }
  
  void FormFactory::DisplayForm(int i)
  {
      Reset();
      Init(i);
      ///show the form pointed by actualform
      actualForm-&gt;show();
  }
  
  void FormFactory::Reset()
  {
      disconnect(actualForm, SIGNAL(GoFw(int)), this, SLOT(DisplayForm(int)));
      ///if actualform is actually pointing to a form, delete it and set actualForm to zero
      if(actualForm!=0)
          delete actualForm;
      actualForm = 0;
  }
  </code></pre>
  
  <p>And the code of MainMenu.cpp is</p>
  
  <pre><code>MainMenu::MainMenu()
  {
      setUpGui();
  }
  
  void MainMenu::setUpGui()
  {
      playButton = new QPushButton(tr("Play"));
      infoButton = new QPushButton(tr("Info"));
      quitButton = new QPushButton(tr("Exit"));
  
      ///connect the clicked signal to the related slot
      connect(infoButton, SIGNAL(clicked()), this, SLOT(info()));
      connect(quitButton, SIGNAL(clicked()), this, SLOT(quit()));
      connect(playButton, SIGNAL(clicked()), this, SLOT(emitSig()));
  
      ///create the vertical layout
      QVBoxLayout *layout = new QVBoxLayout;
  
      layout-&gt;addWidget(playButton);
      layout-&gt;addWidget(infoButton);
      layout-&gt;addWidget(quitButton);
  
      setLayout(layout);
      setWindowTitle(tr("Menu Principale"));
  }
  
  void MainMenu::emitSig()
  {
      emit GoFw(2);
  }
  </code></pre>
  
  <p>Thank you all for your help,
  Luca</p>