Seite 1 von 1

[gelöst] Beenden des Hauptprogramms aus privater Klasse

Verfasst: 23. Dezember 2009 11:59
von 24dan
Hallo ich nutze für das Update meines Programms (Ausführen einer neunen heruntergeladnen Setup.exe) den Aufruf aus einer eigens erstellten Klasse UPDATE.installExe();

Nach dem Start des Prozesses für die setup.exe bekomme ich mein Hauptprogramm nicht geschlossen.

Wie kann ich das wirklich sauber machen?
Bisher nutze ich dafür eine Klasse aus dem Hauptprogramm
Hier mal die Reihenfolge:

Aufruf der funktion aus der Klasse UPDATE im Hauptprogramm

Code: Alles auswählen

void MainWindow::doneFtp(bool error)
{
    stuff...
    UPDATE update;
    update.installExe();
    stuff..
}
Funktion install.exe in UPDATE

Code: Alles auswählen

/*############################################################
  Name:     installExe()
  Eingang:  leer
  Ausgang:  leer
  Funktion: Neue Version installieren
#############################################################*/
void UPDATE::installExe()
{
    MainWindow hauptprog;
    if (QProcess::startDetached ("setup.exe"))
        hauptprog.close();
}
Und hier die Funktion close() aus dem Hauptprogramm

Code: Alles auswählen

void MainWindow::close()
{
    QWidget::close();
}
Ich habe close geschrieben weil ich auf closeEvent als protected ja nicht von aussen zugreifen kann.

Verfasst: 23. Dezember 2009 12:16
von franzf
QCoreApplication::exit();
beendet dein Programm.

Verfasst: 23. Dezember 2009 13:13
von upsala
Alternativ läst sich auch ein Signal mit

Code: Alles auswählen

void QCoreApplication::quit ()   [static slot]
verbinden.

Verfasst: 23. Dezember 2009 14:36
von 24dan
ohh yeahrrrrrrrr rrrr rr

I love it....

It works.
Thanks 2 franzf & upsala

:P :P