Qt 中程序自动重启
参照至 dbzhang老师的博文,记录于此.......
要想理解重启,先得看看Qt程序怎么退出!
1、退出
- int main(int argc, char** argv)
- {
- QApplication a(argc, argv);
- Widget w;
- w.show()
- return a.exec();
- }
最后一句启动了主线程的事件循环。而要退出程序,就是要退出这个事件循环,使main函数返回。
如何退出?
正确方式:
- QCoreApplication::exit(int);
它还有一个马甲
- QCoreApplication::quit();
对于QApplication来说,它有一个常用的属性:quitOnLastWindowClosed
所以,当最后一个窗口关闭时,它可以自动调用前面的exit(),而至于关闭窗口呢,我们还可以使用
- //一般来说,对于多个窗口的程序,调用这个会比直接调用quit要好。因为这样窗口可以接受到Close事件。
- QApplication::closeAllWindows();
2、启动外部程序
在Qt中,做这个工作的非QProcess莫属了,要启动当前程序的另一个进程,有要使二者没有"父子"关系。
- QProcess::startDetached(qApp->applicationFilePath(), QStringList());
下面这行代码也可以,如果路径中不包含空格,这个也可以工作
- QProcess::startDetached(qApp->applicationFilePath());
3、重启
有了上面的分析,下面的代码就简单,好理解了
- void XXX::onXXX()
- {
- qApp->quit();
- QProcess::startDetached(qApp->applicationFilePath(), QStringList());
- }
http://blog.csdn.net/ac_huang/article/details/37995315
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
2013-07-01 JS改变HTML元素的绝对坐标
2013-07-01 JS给TR隔行换色,鼠标经过有动感
2013-07-01 JS把内容动态插入到DIV
2013-07-01 JS不改HTML任何代码就达到动态效果
2013-07-01 JS取得不同连接的地址,并打开新窗口
2013-07-01 JS和CSS的初步入门(JS可以取得所有p的内容并显示)
2013-07-01 JS当页换图片(分析href所给的信息)