如何使Qt程序可重启
1、首先,我们创建一个Qt widget程序,编译器去选xx.ui.qml选择5.6版本就可以了,如果你的qt5是其他版本的话,选择低一两个版本的都可以的。然后就是一路下一步就可以了。这里我就直接基于MainWindow默认就可以了,如果你还有其他需求在这个基础上修改就可以了。


2、创建完程序后,我们这里顺便看看如何使用QAction吧。所以这里我就没有拖出按钮等其他控件了,代码目前不需要修改,具体程序目录结构如下图。

3、接下来,我们首先定义一个reboot重启函数,作为一个槽函数,当程序重启的时候,我们传入一个自定义的参数,以备我们在main函数中使用,这里我们定义这个程序退出值为-1,这里值任意即可,你可以定义为-10,-100,随意。

4、接下来,有的人可能会想到,我还没有声明,出错了。这里主要是告诉大家一个技巧,QtCreator中经常用到了,就是右键快捷键自动补充声明和定义,我们右键点击上图的reboot函数,然后选择refactor,添加public slots声明,如果你是先声明,那也是一样的操作,就可以自动补充函数定义的框架了。

5、重启的槽函数里我们打印了一句话,待会儿测试用,然后设置退出码,qApp是QApplication的全局变量,我们创建程序的时候就存在了。所以使用qApp设置即可。然后我们声明一个QAction变量,这里用来作为测试的时候,用来点击的,实际运用的时候,大家可以在自己的事件,信号里面使用即可。

6、QAction变量定义好了以后,我们就算是完成一半工作了,最关键的一步就是添加好这个QAction和我们槽函数reboot的连接,即图中的connect函数部分,这里的写法是Qt5中的写法,Qt4的写法是有SIGNAL和SLOT宏的写法,不过两者可以通用的,Qt5中作了扩展。以后我们再来说扩展部分怎么用吧。

7、最后我们就需要修改main函数部分了,main函数我们主要修改gui线程的返回值,这里我们做一个循环,当我们点击重启,退出值就会设置为我们的-1,于是程序就会重启。

8、最终运行结果如下图,点击菜单栏的重启,程序重启,下方调试窗口出现我们的打印语句。

