http://blog.163.com/qimo601@126/blog/static/1582209320130105113647/
QMainWindow* ImgWindow1;
ImgWindow1 = new QMainWindow(this);
ImgWindow1->show();
connect(ImgWindow1, SIGNAL(destroyed()), this, SLOT(CloseImgWindow()));
void QMainFunction::CloseImgWindow()
{
qDebug() << "It is Destroyed!";
}
但是在視窗關閉時好像沒有相應qDebug()那一句。是說訊息沒有發射出來。
要獲得子視窗銷毀的訊息怎麼做。
| sbtree |
2009-12-07 23:08 |
| 要對你的視窗設定WA_DeleteOnClose屬性,預設的情況下關閉視窗僅僅意味著隱藏它 ImgWindow1->setAttribute(Qt::WA_DeleteOnClose, true); |
|
| yangfanxing |
2009-12-12 22:43 |
| Quote: 引用第1樓sbtree於2009-12-07 23:08發表的 : 要對你的視窗設定WA_DeleteOnClose屬性,預設的情況下關閉視窗僅僅意味著隱藏它 ImgWindow1->setAttribute(Qt::WA_DeleteOnClose, true); |
|
| Qt視窗的刪除、析構 |
| 類型:Python,C++ & Qt4,建立時間:一月 1, 2012, 8:42 a.m. |
| 標題無“轉載”即原創文章,著作權。轉載請註明來源:http://besteam.im/blogs/article/60/。 Qt內關於視窗的刪除是一個複雜的事情。接下來詳細地講一講。 當我們建立一個視窗時,如果這個視窗是一個最上層視窗,準確地說是w.windowFlags().testFlag(Qt.Window) is True的視窗,Qt會自動附加一個Qt.WA_QuitOnClose屬性。它的意思是,視窗被關閉了,qApp.lastWindowClose訊號會被觸發。 預設情況下,qApp接收到此訊號後會退出程式,這個行為相當於在初始化程式時: qApp.lastWindowClosed.connect(qApp.quit) 要修改這個預設行為,可以設定QApplication的quitOnLastWindowClosed屬性,比如: qApp.setQuitOnLastWindowClosed(False) 通常,使用者可以點擊視窗的關閉按鈕關閉視窗,或者當系統關閉的時候,視窗也會被關閉。我們可以通過重載視窗的closeEvent()函數控制關閉動作,比如詢問使用者要不要儲存文檔,或者只是已最小化的視窗。下面是一個例子: def closeEvent(self, event): if self.maybeSave(): self.saveSettings(): event.accept() else: event.ignore() 我們也可以在菜單裡設定一個退出命令,點擊它的時候調用視窗的close()函數即是關閉視窗。 關閉視窗之後,通過我們還要手動銷毀這個視窗,釋放它所佔用的記憶體。對此Qt提供了一個簡便的辦法,只要將視窗的Qt.WA_DeleteOnClose屬性設定為true,Qt會自動幫我們銷毀這個視窗。 標題無“轉載”即原創文章,著作權。轉載請註明來源:http://besteam.im/blogs/article/60/。 |