想要实现的功能
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);