您的位置:首页 > 编程语言 > Qt开发

Qt 中程序自动重启

2016-07-01 00:56 781 查看
参照至 dbzhang老师的博文,记录于此.......

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

1、退出

[cpp] view plain copy







int main(int argc, char** argv)

{

QApplication a(argc, argv);

Widget w;

w.show()

return a.exec();

}

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

如何退出?

正确方式:

[cpp] view plain copy







QCoreApplication::exit(int);

它还有一个马甲

[cpp] view plain copy







QCoreApplication::quit();

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

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

[cpp] view plain copy







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

QApplication::closeAllWindows();

2、启动外部程序

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

[cpp] view plain copy







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

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

[cpp] view plain copy







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

3、重启

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

[cpp] view plain copy







void XXX::onXXX()

{

qApp->quit();

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

}
http://blog.csdn.net/ac_huang/article/details/37995315
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: