从继承关系看,QApplication父类是QGuiApplication,QGuiApplication父类是QCoreApplication。
开发的应用无图像界面,就使用QCoreApplication;有图形界面,只使用QML实现,使用QGuiApplication,使用QWidget,或者QML与QWidget使用,则用QApplication。我的一个app,只用到了QML,但使用了系统托盘systemtrayicon,就必须使用QApplication,否则无法创建系统托盘。
QApplication包含的功能最多,也就最笨重,QGuiApplication到QCoreApplication越来越轻量。分的这么细,主要目标是实现Qt Lite,到Qt5.8开始,实现用到什么模块,加载什么模块,尽量减小编译后的app体积。