How to make an Application restartable/de: Difference between revisions
No edit summary |
AutoSpider (talk | contribs) (Add "cleanup" tag) |
||
Line 1: | Line 1: | ||
{{Cleanup | reason=Auto-imported from ExpressionEngine.}} | |||
[[Category:HowTo]] | [[Category:HowTo]] | ||
[[Category:snippets]] | [[Category:snippets]] |
Revision as of 14:54, 3 March 2015
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;