Qt表單關閉時,如何自動銷毀表單類對象__QT編程

來源:互聯網
上載者:User

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/。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.