也谈qt中QMdiArea和QSubWindow

昨天才静下心来仔细看了看QMdiArea

作为MainWindow的中央部件,QMdiArea的作用还是相当大的

首先是向QMdiArea中添加QSubWindow和从QMdiArea中删除QsubWindow

QSubWindow * addSubWindow(QWidget * widget);

widget可以是QSubWindow或者直接是QWidget及子类,若是后者的话QMdiArea会自动创建一个QSubWindow,然后将widget置为QSubWindow的setWidget();

 

 

 首先removeSubWindow,不会删除widget,再有就是点击subWindow的close 按钮,mdi不会调用removeSubWindow,只是隐藏widget,要重新显示subWindow,只用subWindow->showNormal(),form->show();

想隐藏也可以直接调用subWindow的hide()函数

 

正统的关闭和显示是addSubWindow和removeSubWindow的成对调用。

 

可以设置设置subWindow和其widget的WA_DeleteOnClose属性,关闭时会删除subWindow和其widget,再显示时复制创建form和subWindow,这种情况在有些情况下还是有必要的,至少节约内存

你可能感兴趣的:(也谈qt中QMdiArea和QSubWindow)