1.) 我想重新启动我的 QT4 应用程序。只是正常关闭和启动同一个应用程序。
2.) 为什么?好吧,我需要一个“重置”一切的选项。重新启动应用程序似乎是最简单的方法。问题是,有很多类和一切。我没有时间把它们的每一个设置都恢复到标准,每一个文本框,小部件都要清除......我知道应用程序重启不是最好的方法,你认为还有什么其他方法?
谢谢你
1.) 我想重新启动我的 QT4 应用程序。只是正常关闭和启动同一个应用程序。
2.) 为什么?好吧,我需要一个“重置”一切的选项。重新启动应用程序似乎是最简单的方法。问题是,有很多类和一切。我没有时间把它们的每一个设置都恢复到标准,每一个文本框,小部件都要清除......我知道应用程序重启不是最好的方法,你认为还有什么其他方法?
谢谢你
要重新启动应用程序,您可以startDetached
在退出进程后使用:
#include <QApplication>
#include <QProcess>
...
// restart the app:
qApp->quit();
QProcess::startDetached(qApp->arguments()[0], qApp->arguments());
1)您可以运行脚本,安排操作系统稍后启动您的应用程序。
2) 编写一个包含所有应用程序设置的单独类。需要时重置。
有趣的要求。只需为“重新启动”保留一个退出代码并执行类似(未经测试)的操作:
int main(int argc, char **argv)
{
QApplication app(argc, argv);
...
int ret = app.exec();
if (ret == EXIT_RESTART) {
::execve(...);
}
return ret;
}
然后你可以在任何地方调用 QApplication::exit(EXIT_RESTART) ,你应该很高兴。或者使用包装脚本来做同样的事情。(确保在这两种情况下,如果您的应用程序需要任何命令行参数,您都能令人满意地处理命令行参数。)
一种更简洁的方法是将所有需要重置的东西连接到相同的信号。
您可以在同一 QApplication 下的main()中删除类并创建新类
在这种情况下,明智的做法是将所有创建/初始化小部件等的东西放在一个函数中(当然,它可以调用子函数)。当您需要重置所有内容时,只需调用它即可。根据具体的实现,您可能需要先删除/取消初始化这些东西。
此方法适用于 PyQt。我写它是为了擦除所有设置并使用干净的设置重新启动应用程序。application_main
是主要方法,clearSettings
是清除设置的槽。
class GuiMain
#Most of implementation missing
def clearSettings(self):
"""Deletes all settings, and restarts the application"""
#TODO: save changes
setting_store = QSettings()
setting_store.clear()
setting_store.sync()
QApplication.exit(GuiMain.restart_code)
restart_code = 1000
@staticmethod
def application_main():
"""
The application's main function.
Create application and main window and run them.
"""
while True:
app = QApplication(sys.argv)
window = GuiMain()
window.show()
ret = app.exec_()
if ret != GuiMain.restart_code:
break
del window
del app