此外如果需要直接退出某个应用程序,可以直接调用Qt中的一个全局指针:qApp ,全局指针qApp指向全局的QApplication对象。

在需要停止程序运行的位置直接加入如下代码

#include <QtGui/QApplication> / #include <QApplication>
...
  qApp->quit();

说明:

qApp是一个全局的函数,可以在Qt说明文档中直接找到,不是main函数定义的QApplication对象。(QApplication对象也可以退出,使用 app->exit(0);或者 app->quit();)
exit是可以带一个参数的,可以设置退出标志,而quit相当于调用exit(0)。
qApp->quit()关闭的是整个应用程序,不只是窗口
一般情况下关闭窗口应用程序会直接退出,如果要求关闭窗口时,应用程序不退出,则需要设置QApplication的属性:
QApplication::setQuitOnLastWindowClosed(false);

通过qApp->quit();的方式结束程序的运行,一些窗口的析构函数和closeevent事件都得不到执行,程序就结束退出了,
如果析构函数或者closeevent事件中安排了自己的功能代码,需要在qApp->quit();执行前显示的使用delete或close。

注意

在a.exec()之前使用qApp->quit()无效。exec开始时间循环,而在之前调用的对话框的事件循环不能处理到应用程序的quit事件。
当然,此处有一个最简单的解决办法,如果登录失败,则让main函数直接返回,而不要去构造显示主界面,也不要再开启应用程序的事件循环。
而在事件循环开始后的其他地方,如主界面中可以点击退出按钮来退出等,则可以调用QApplication::exit(0)或者quit来退出。
终结起来一句话,在开启事件循环之前,对exit和quit的调用都是无效的,会被忽略掉。