想要實現的功能
Fwidget作爲一個全局變量,可以作爲UI部件,顯示到不同的窗體。具體操作如下:
1、在mainwindow中,創建一個私有變量(也可以叫做全局變量)Fwidget。
2、打開子窗體formA時,把Fwidget指針作爲參數傳入,通過佈局管理器的addWidget把Fwidget作爲子窗體formA的一部分顯示。
子窗體formA用完後,會被關閉,析構。
3、打開子窗體formB時,把Fwidget指針作爲參數傳入,通過佈局管理器的addWidget把Fwidget作爲子窗體formB的一部分顯示。
子窗體formB用完後,會被關閉,析構。
遇到的問題
執行到步驟3時,報錯,發現Fwidget已經被析構了。
原因分析及解決辦法
1、formA的佈局管理器addWidget時,貌似會把當前formA設置爲Fwidget的父級窗體。也即自動執行了代碼,Fwidget->setParent(formA); 那麼在父級窗體析構時,Fwidget也會被析構。
2、解決辦法,就是在formA的析構函數,增加一行代碼Fwidget->setParent(NULL);