2010-07-12 76 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)中,我創建了其他幾個QWidgetsQwindows。當我關閉應用程序時出現問題QMainWindow消失,看起來像程序退出,但它仍然在內存中。 (我可以從任務管理器/流程中看到)。 我也在捕捉我的TryQt程序中的closeEvent,並關閉了在那裏打開的所有可能的東西。但仍然沒有用。有沒有人知道爲什麼會發生這種情況?

回答

4

好,那是因爲你調用

qApp->setQuitOnLastWindowClosed(false); 

文檔說:

這個屬性保存在關閉 最後一個窗口 應用程序是否隱含退出。

默認爲true。

如果該屬性爲真,則應用 退出當最後 可見主窗口(即窗口 沒有父)與 Qt的:: WA_QuitOnClose屬性集是 閉合。默認情況下,對於除 子窗口以外的所有窗口小部件,此屬性爲 。有關Qt :: Window 對象的詳細列表,請參閱Qt :: WindowType 。

並且您由於某種原因將其設置爲false。

+0

改變qApp-> setQuitOnLastWindowClosed(假);至真仍然沒有改變任何事情。即使主窗口已關閉,它仍未退出程序。 – user389423 2010-07-12 15:34:14

4

我有一個類似的問題(除了調用qApp->setQuitOnLastWindowClosed(true);作爲以前的答案建議)。我懷疑我們使用不正確清理其線程庫之一,調查正在等待,但最簡單的解決方法是更換return a.exec();有:

exit(a.exec());