遇到这种问题一般两种情况:
- 有GUI界面:你的代码中用了QWidget的类,但是你main函数中用的不是QApplication,这个时候只需要将QGuiApplication或者QCoreApplication改为QApplication即可。产生这个错误的原因是这个QWidget 是建立在QApplication 上的。
- 无GUI界面:这种情况的应用程序肯定是要用QCoreApplication类的,不然后续有新的问题找不到display。所以肯定是你的代码中用了QWidget的类或者继承自QWidget的类,找到并将其删除即可。
QApplication、QGuiApplication、QCoreApplication三者之间的关系:
- QCoreApplication用于non-GUI的应用程序(不需要依赖QtGui库),QApplication用于包含GUI的应用程序(需要用到QtGui库)。
- QApplication继承了QGuiApplication类,而QGuiApplication继承了QCoreApplication类,而QCoreApplication又继承QObject的,而QObject就是QT中最基本的基类,也就是QT的根基。
QApplication的作用:
QApplication 类管理GUI程序的控制流和主设置。QApplication 包含主事件循环,所有来自窗口系统和其他源的事件将被处理和分配。它也处理程序的初始化,析构和提供会话管理。对于非GUI的用QCoreApplication 代替QApplication,它不依赖QtGui库。qApp是一个全局的指针,指向QApplication的对象。