Приложение Qt не закрывается, остается в памяти - PullRequest
1 голос
/ 12 июля 2010

Вот код, с которым у меня проблемы:

QApplication a(argc, argv);
QString path = qApp->applicationDirPath();
qApp->setQuitOnLastWindowClosed(false);
a.addLibraryPath(path+"/plugins");
TryQt w;
w.show();
return  a.exec();

Вот так я запускаю свое приложение.В приложении (TryQt) я создаю несколько других QWidgets и Qwindows.Проблема возникает, когда я закрываю приложение. QMainWindow исчезает, похоже, что программа завершает работу, но остается в памяти.(Я вижу из Диспетчер задач / Процессы ).Я также перехватываю closeEvent в своей программе TryQt и закрываю все, что я мог там открыть.Но все равно бесполезно.Кто-нибудь знает, почему это происходит?

Ответы [ 2 ]

5 голосов
/ 29 сентября 2011

У меня была похожая проблема (кроме звонка qApp->setQuitOnLastWindowClosed(true);, как предполагает предыдущий ответ). Я подозреваю, что одна из используемых нами библиотек не очищает свой поток должным образом, и расследование еще не завершено, но самым простым способом было заменить return a.exec(); на:

exit(a.exec());
5 голосов
/ 12 июля 2010

хорошо, это потому, что вы звоните

qApp->setQuitOnLastWindowClosed(false);

, документы говорят:

Это свойство определяет, неявно ли выходит приложение, когда закрывается последнее окно.

По умолчанию установлено значение true.

Если это свойство имеет значение true, приложения закрываются, когда закрывается последнее видимое главное окно (т.е. окно без родительского элемента) с набором атрибутов Qt :: WA_QuitOnClose.По умолчанию этот атрибут установлен для всех виджетов, кроме вложенных окон.Обратитесь к Qt :: WindowType для подробного списка объектов Qt :: Window.

, и вы по какой-то причине устанавливаете его в false.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...