How to make an Application restartable/de
| This article may require cleanup to meet the Qt Wiki's quality standards. Reason: Auto-imported from ExpressionEngine. Please improve this article if you can. Remove the {{cleanup}} tag and add this page to Updated pages list after it's clean. |
Deutsch | English
Wie man ein Programm neustartfähig macht
Wenn es nötig ist, dass sich ein Programm, abhängig von Benutzereingaben, selbst neu startet, kann man dies auf einfache Weise wie folgt erreichen:
Einen Exit-Code festlegen, der den Neustart repräsentieren soll
Es ist eine gute Idee diesen Exit-Code als statische (static) Variable im main window zu deklarieren…
static int const EXIT_CODE_REBOOT;<code>
und ihn dann mit einem Wert zu initialisieren:int const MainWindow::EXIT_CODE_REBOOT = -123456789;
Man kann aber auch eine globale Variable oder Konstante benutzen.
h3. Define a slot in your application main window that will perform the exit from the application Definiere einen Slot in deinem Programm-Hauptfenster, von dem aus der Neustart ausgeführt wird
void MainWindow::slotReboot()
{
qDebug() << "Performing application reboot..";
qApp->exit( MainWindow::EXIT_CODE_REBOOT );
}Erstelle eine QAction, die sich um den Neustart kümmert
Wenn die folgende QAction ausgelöst wird, sendet sie ein Signal an unsere
slotReboot()Methode und veranlasst so den Neustart des Programms.
actionReboot = new QAction( this );
actionReboot->setText( tr("Restart") );
actionReboot->setStatusTip( tr("Restarts the application") );
connect( actionReboot,
SIGNAL (triggered()),
this,
SLOT (slotReboot()) );Hauptprogrammfluß anpassen
Der letzte Schritt besteht darin, die
main()
-Funktion so zu verändern, dass bei unserem Neustart alle Objekte unseres Programms zerstört werden und der Programmfluß wieder am Anfang beginnt:
int main(int argc, char *argv[])
{
int currentExitCode = 0;
do{
QApplication a(argc, argv);
MainWindow w;
w.show();
currentExitCode = a.exec();
}while( currentExitCode == MainWindow::EXIT_CODE_REBOOT );
return currentExitCode;