QT4:如何重启应用程序?重新设置?

时间:2011-02-26 14:57:37

标签: c++ qt qt4 reset application-restart

1。)我想重启我的QT4应用程序。只需正常关机并启动相同的应用程序。

2。)为什么?好吧,我需要一个选项来“重置”一切。重启应用程序似乎是最简单的方法。问题是,有很多课程和一切。我没有时间将它们的每个设置都恢复到标准,每个textBox,Widget都要清除......我知道应用程序重启不是最好的方法,你认为还有另一种方式吗?

谢谢

6 个答案:

答案 0 :(得分:4)

要重新启动应用程序,您可以在退出进程后使用startDetached

#include <QApplication>
#include <QProcess>

...

// restart the app:
qApp->quit();
QProcess::startDetached(qApp->arguments()[0], qApp->arguments());

答案 1 :(得分:2)

1)您可以运行脚本,安排操作系统以便稍后启动您的应用程序。

2)编写一个单独的类,其中包含所有应用程序设置。需要时重置。

答案 2 :(得分: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),你应该好好去。或者使用包装器脚本来执行相同的操作。 (如果你的应用程序需要,请确保在这两种情况下都能令人满意地处理命令行参数。)

更简洁的方法是将需要重置的所有内容连接到同一信号。

答案 3 :(得分:1)

您可以删除这些类并在同一QApplication 下的 main()中创建新类

答案 4 :(得分:1)

在这种情况下要做的理智是将所有创建/初始化小部件等的东西放在一个函数中(当然,它可以调用子函数)。当您需要重置所有内容时,只需调用它即可。根据具体实现,您可能需要先删除/取消初始化。

答案 5 :(得分:0)

此方法适用于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