Получение ошибки: сначала нужно создать приложение QGUIA

Я разрабатываю приложение с графическим интерфейсом, но всякий раз, когда я пытаюсь закрыть приложение, выдается сообщение об ошибке «Сначала нужно создать QGuiapplication». Мой основной не возвращает код выхода 0, поэтому он не выходит нормально. Я думаю, что какого-то деструктора вызывают дважды, но здесь нужна помощь. Я прилагаю код main.cpp здесь для справки.

#include <QGuiApplication>
#include <QFontDatabase>
#include <QtWebEngine>

#include "ApplicationManager.h"#include "AppLogger.h"
int main(int argc, char *argv[])
{
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QCoreApplication::setAttribute(Qt::AA_UseOpenGLES);

QGuiApplication app(argc, argv);
QtWebEngine::initialize();

app.setApplicationName("MCS3.0");
QFontDatabase::addApplicationFont(":/Fonts/Roboto.ttf");

#ifdef VERSION
app.setApplicationVersion(QString("%1").arg(VERSION));
logInfoMessage(app.applicationName()+app.applicationVersion()+" Started");
#endif

ApplicationManager::instance().run();

return app.exec();
}

0

Решение

Соответствующая часть проблемы находится внутри 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

снимок testQApp

Когда я закрываю приложение, возникает проблема:

QApplication::exec: Please instantiate the QApplication object first
Segmentation fault (core dumped)

$

Чтобы сделать это полным, соответствующий параграф док. около QApplication:

Для любого приложения с графическим интерфейсом, использующего Qt, точно один QApplication объект, независимо от того, имеет ли приложение 0, 1, 2 или более окон в любой момент времени. Для неQWidget основанные на Qt приложения, используйте QGuiApplication вместо этого, поскольку это не зависит от QtWidgets библиотека.

Пожалуйста, обратите внимание, что подчеркивание не сделано мной.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]