Qt 中程序自动重启
2024-10-16 11:25:34
参照至 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
最新文章
- RDLC 子报表
- Java中用ClassLoader载入各种资源(类、文件、web资源)的方法
- Ida动态修改android程序的内存数据和寄存器数值,绕过so文件的判断语句
- linux下重启oracle服务:监听器和实例
- HDU 1710 二叉树的遍历 Binary Tree Traversals
- LINQ之路 5:LINQ查询表达式
- 36个炫丽的html5 canvas展示
- CSharp使用log4net记录日志
- Asp.Net MVC向视图View传值的三种常见的方法:
- Win32/MFC的基本概念
- CocoaPods ReactiveCocoa 学习实践一 之 配置环境
- 【SQL.基础构建-第二节(2/4)】
- 9.Flask Cookie和Session
- 创建表结构的sql语句
- Fiddler中显示IP方法
- 用C++实现半透明按钮控件(PNG,GDI+)
- [Python] 文件扫描
- Vim 基本配置
- 超实用 2 ArrayList链表之 员工工资管理系统
- js ~或者~~