QApplication类管理GUI应用程序的控制流和主要设置。

QApplication专门为qgui应用程序提供基于QWidget的应用程序所需的一些功能。它处理特定于小部件的初始化、终结。

对于任何使用Qt的GUI应用程序,无论应用程序在任何给定时间是否有0、1、2或更多窗口,都只有一个QApplication对象。对于非基于QWidget的Qt应用程序,请改用QGuiApplication,因为它不依赖于qtwidts库。

一些GUI应用程序提供了一种特殊的批处理模式,即提供用于执行任务的命令行参数,而无需手动干预。在这种非GUI模式下,实例化一个普通的QCoreApplication就足够了,以避免不必要地初始化图形用户界面所需的资源。下面的示例演示如何动态创建适当类型的应用程序实例:

 



QCoreApplication* createApplication(int &argc, char *argv[])
{
for (int i = 1; i < argc; ++i)
if (!qstrcmp(argv[i], "-no-gui"))
return new QCoreApplication(argc, argv);
return new QApplication(argc, argv);
}

int main(int argc, char* argv[])
{
QScopedPointer<QCoreApplication> app(createApplication(argc, argv));

if (qobject_cast<QApplication *>(app.data())) {
// start GUI version...
} else {
// start non-GUI version...
}

return app->exec();
}