Соответствующая часть проблемы находится внутри ApplicationManager.h
, которая не была обнаружена OP.
Могу поспорить, что он делает еще один экземпляр QApplication
(или QGUIApplication
или QCoreApplication
).
Как я могу это знать? Это частично предположение (как выглядит название) и частично результат следующего теста:
testQApp.cc
:
#include <QtWidgets>
int main(int argc, char **argv)
{
QApplication app(argc, argv);
{ QApplication app(argc, argv);
QLabel qLbl("The app in app");
qLbl.show();
app.exec();
}
return app.exec();
}
testQApp.pro
:
SOURCES = testQApp.cc
QT = widgets
Скомпилировано и протестировано в cygwin64 в Windows 10:
$ qmake-qt5 testQApp.pro
$ make
$ ./testQApp
При выходе из приложения возникает проблема:
QApplication::exec: Please instantiate the QApplication object first
Segmentation fault (core dumped)
$
Чтобы завершить это, соответствующий параграф док. о QApplication
:
Для любого приложения с графическим интерфейсом, использующего Qt, существует точно один QApplication объект, независимо от того, имеет ли приложение 0, 1, 2 или более окон в любой момент времени. Для приложений Qt, отличных от QWidget , используйте взамен QGuiApplication , поскольку это не зависит от библиотеки QtWidgets .
Обратите внимание, что выделение не сделано мной.