在槽函數中釋放一個類的空間

       首先做一個假設:我們要實現一個程序,程序中有一個MainWindow,MainWindow中有一個DockWidget。在點DockWidget的關閉按鈕的時候,需要在MainWindow中進行一些處理,然後釋放DockWidget。何以實現?

       我想到的是:在DockWidget類中聲明一個信號,並把這個信號連接到MainWindow類中的處理函數removeDockWidget(), 最後重載closeEvent函數,在closeEvent中發送這個信號。

       而在removeDockWidget()中,我是這樣寫的:

void MainWindow::removeDockWidget()

{

      /******************************

       *   some function deal with other things

       *  ……

           ……

           ……

       *****************************/

       delete dockWidget;                           //release the space assigned to DockWidget

 

}

 

       在調試的時候,雖然DockWidget的析構函數可以被調用來析構這個類,但是會有如下兩個debug信息:

QObject: Do not delete object, 'qt_dockwidget_closebutton', during its event handler!
QObject: Do not delete object, 'unnamed', during its event handler!

 

       下面給出這個錯誤的解決方法:

        不用delete直接釋放空間,而改用QObject::deleteLater()函數來釋放空間。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章