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(); }
########################