1. 错误原因分析
在 Qt 中,QWidget是一个用于创建用户界面组件(如窗口、按钮等)的类。而QApplication类是整个 Qt 应用程序的核心,它管理着应用程序的控制流和主要设置。
这个错误提示表明在创建QWidget实例之前没有正确地创建QApplication实例。QWidget依赖于QApplication来进行一些初始化工作,比如事件循环的设置等。
2. 解决方案
- 在创建 QWidget 之前先创建 QApplication
cpp
#include <QApplication>
#include <QWidget>
int main(int argc, char *argv[])
{
// 创建QApplication实例
QApplication app(argc, argv);
// 创建QWidget实例,这里以一个简单的窗口为例
QWidget window;
window.show();
// 进入事件循环
return app.exec();
}
- 确认应用程序只有一个 QApplication 对象
cpp
ASSERT failure in QCoreApplication: "there should be only one application object"
如果程序重复创建了 QApplication 对象,会报以上错误。
- 查看是否使用了静态的(static)的qwidge域或其子类
因为静态和全局对象进入main函数之前就产生了,所以出现了此断言错误。解决方法是避免在类中采用static的QWidget以及其子类和全局的QWidget.
cpp
static QWidget* pW = new QWidget;
int main(int argc, char* argv[]) {
QApplication app(argc, argv);
}
以上也会导致出现该错误。
3. 解决方案2
如果以上解决方案未解决,可能是混用 debug库 和 release库导致的
可以看下pro
或pri
文件中的库配置是否正确。
然后删除构建目录,执行qmake
后,重新构建。