2010-07-12 21 views
0

Вот код, у меня возникли проблемы с:Qt приложение не выходя, оставаясь в памяти

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 и закрываю все возможные возможности, которые я открыл там. Но все равно бесполезно. Кто-нибудь знает, почему это происходит?

ответ

4

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

qApp->setQuitOnLastWindowClosed(false); 

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

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

Значение по умолчанию - true.

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

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

+0

изменение qApp-> setQuitOnLastWindowClosed (ложь); к True все еще ничего не меняет. это не выход из программы, хотя основное окно было закрыто. – user389423

4

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

exit(a.exec()); 
Смежные вопросы