码迷,mamicode.com
首页 > 其他好文 > 详细

Qt 中程序自动重启

时间:2016-07-01 06:31:31      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:

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

 

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

 

1、退出

 

[cpp] view plain copy
 
 技术分享技术分享
  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
 
 技术分享技术分享
  1. QCoreApplication::exit(int);  

 

 

它还有一个马甲

 

[cpp] view plain copy
 
 技术分享技术分享
  1. QCoreApplication::quit();  


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

 

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

 

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

 

 

2、启动外部程序

 

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

 

[cpp] view plain copy
 
 技术分享技术分享
  1. QProcess::startDetached(qApp->applicationFilePath(), QStringList());  

 

 

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

 

[cpp] view plain copy
 
 技术分享技术分享
  1. QProcess::startDetached(qApp->applicationFilePath());  

 

 

3、重启

 

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

 

[cpp] view plain copy
 
 技术分享技术分享
    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

Qt 中程序自动重启

标签:

原文地址:http://www.cnblogs.com/findumars/p/5631701.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!