参照至 dbzhang老师的博文,记录于此.......

要想理解重启,先得看看Qt程序怎么退出!

1、退出

  1. int main(int argc, char** argv)
  2. {
  3. QApplication a(argc, argv);
  4. Widget w;
  5. w.show()
  6. return a.exec();
  7. }

最后一句启动了主线程的事件循环。而要退出程序,就是要退出这个事件循环,使main函数返回。

如何退出?

正确方式:

  1. QCoreApplication::exit(int);

它还有一个马甲

  1. QCoreApplication::quit();

对于QApplication来说,它有一个常用的属性:quitOnLastWindowClosed

所以,当最后一个窗口关闭时,它可以自动调用前面的exit(),而至于关闭窗口呢,我们还可以使用

  1. //一般来说,对于多个窗口的程序,调用这个会比直接调用quit要好。因为这样窗口可以接受到Close事件。
  2. QApplication::closeAllWindows();

2、启动外部程序

在Qt中,做这个工作的非QProcess莫属了,要启动当前程序的另一个进程,有要使二者没有"父子"关系。

  1. QProcess::startDetached(qApp->applicationFilePath(), QStringList());

下面这行代码也可以,如果路径中不包含空格,这个也可以工作

  1. QProcess::startDetached(qApp->applicationFilePath());

3、重启

有了上面的分析,下面的代码就简单,好理解了

    1. void XXX::onXXX()
    2. {
    3. qApp->quit();
    4. QProcess::startDetached(qApp->applicationFilePath(), QStringList());
    5. }

http://blog.csdn.net/ac_huang/article/details/37995315

最新文章

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

热门文章

  1. HTML5之新增标签用途及应用场景
  2. 异常处理 - PHP手册笔记
  3. 1分钟快速生成用于网页内容提取的xslt
  4. python针对于mysql的增删改查
  5. 安装Ubuntu时的硬盘分区方案 转载
  6. ImportError: cannot import name webdriver问题解决
  7. AsyncTask加载图片
  8. 隐私模式启动IE 谷歌浏览器
  9. "NO 3D support is available from the host"
  10. 【Java】使用Runtime执行其他程序