原文: http://wiki.qt.io/How_to_make_an_Application_restartable
int main(int argc, char** argv) { QApplication app(argc, argv); Widget w; w.show() return app.exec();
//最后一句启动了主线程的事件循环。而要退出程序,就是要退出这个事件循环,使main函数返回。 }
当最后一个窗口关闭,退出时, 可以自动调用 exit();
//方式一: QCoreApplication::exit(int); //方式二: QCoreApplication::quit();
//关闭窗口可以使用
QApplication::closeAllWindows()
启动外部程序:
QProcess::startDetached(qApp->applicationFilePath(), QStringList()); //如果路径中不包含空格,可使用这个 QProcess::startDetached(qApp->applicationFilePath());
重启程序:
//方法一: void XXX::onXXX() { qApp->quit(); QProcess::startDetached(qApp->applicationFilePath(), QStringList()); } //方法二: void XXX::onXXX() { qApp->closeAllWindow(); QProcess::startDetached(qApp->applicationFilePath(), QStringList()); } //方法三: void XXX::onXXX() { qApp->exit(123) } int main(int argc, char** argv) { .... int ret = app.exec(); if (ret == 123) { QProcess::startDetached(qApp->applicationFilePath(), QStringList()); return 0; } return ret; }