zoukankan      html  css  js  c++  java
  • Qt 中程序自动重启

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

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

    1、退出

    [cpp] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. int main(int argc, char** argv)  
    2. {  
    3.     QApplication a(argc, argv);  
    4.       
    5.     Widget w;  
    6.       
    7.     w.show()  
    8.       
    9.     return a.exec();  
    10. }  


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

    如何退出?

    正确方式:

    [cpp] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. QCoreApplication::exit(int);  

    它还有一个马甲

    [cpp] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. QCoreApplication::quit();  


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

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

    [cpp] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. //一般来说,对于多个窗口的程序,调用这个会比直接调用quit要好。因为这样窗口可以接受到Close事件。  
    2. QApplication::closeAllWindows();  

    2、启动外部程序

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

    [cpp] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. QProcess::startDetached(qApp->applicationFilePath(), QStringList());  

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

    [cpp] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. QProcess::startDetached(qApp->applicationFilePath());  

    3、重启

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

    [cpp] view plain copy
     
     在CODE上查看代码片派生到我的代码片
      1. void XXX::onXXX()   
      2. {  
      3.     qApp->quit();  
      4.       
      5.     QProcess::startDetached(qApp->applicationFilePath(), QStringList());  
      6. }  

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

  • 相关阅读:
    遍历及线索化二叉树
    二叉树
    程序的内存布局
    C语言一些易混淆的概念
    C语言标准库函数memcpy和memmove的区别以及内存重叠问题处理
    柔性数组
    一个基于QT简单登录对话框(带验证码功能)
    Qt中的布局管理器
    Qt中的标准对话框
    一个基于QT简单登录对话框
  • 原文地址:https://www.cnblogs.com/findumars/p/5631701.html
Copyright © 2011-2022 走看看