Seite 1 von 1

Löschen eines Singleton main windows

Verfasst: 10. Mai 2006 16:09
von monte
Hi,

Ich hab mein main Window als Singleton Objekt Programmiert. Daher ich habe in meiner main() einen statischen Aufruf MainWindow::getMainWindow() welcher mir ein QMainWindow erzeugt.

etwa so :

Code: Alles auswählen

   
   QApplication app(argc, argv);
   if( !createConnection() )
      return 1;

   MainWindow * window = MainWindow::getMainWindow();
   window->show();

   iRetVal = app.exec();

   MainWindow::deleteMainWindow();
   return iRetVal;

Code: Alles auswählen

MainWindow * MainWindow::getMainWindow()
{
    if( !MainWindow::bHasInstance )
    {
        MainWindow::bHasInstance = true;
        MainWindow::mwInstance = new MainWindow();
    }

    return MainWindow::mwInstance;
}

Code: Alles auswählen

void MainWindow::deleteMainWindow()
{
    if( MainWindow::bHasInstance )
    {
        MainWindow::bHasInstance = false;
        MainWindow::mwInstance->close();
        MainWindow::mwInstance->deleteLater();
    }
}
Beim beenden des Programms bekomm ich nun auf der Konsole folgende Meldung.

Code: Alles auswählen

X Error of failed request:  BadWindow (invalid Window parameter)
  Major opcode of failed request:  18 (X_ChangeProperty)
  Resource id in failed request:  0x0
  Serial number of failed request:  5160
  Current serial number in output stream:  5172
Kann es sein das das Objekt nicht richtig gelöscht wird ?
Oder wird das Objekt von QT gelöscht ?

MfG
Martin

Verfasst: 10. Mai 2006 17:16
von Emperor_L0ser
wenn du nicht sehr spezielle sachen drin hast, löscht qt es beim beenden, die erste zeile der fehlermeldung sieht aus, als wenn das fenster bereits gelöscht wurde und dann jemand versucht drauf zuzugreifen.