Qt动态布局界面,我的需要将原来的 界面删除然后重新布局,按照官方和网上的说法,首先是删除之前的布局
(注:m_pToolWidget是我的界面的名称)
if (m_pToolWidget->layout() != nullptr)
//这个很重要,如果不让parent为null的话,界面上面的按钮或者其他的空间可能还会显示
//因为我的布局也是动态创建的,所以我这边将布局也delete,之前我用的是deletelater,结果发现界面在第二次才会出现。
delete和deletelater的区别
众所周知delete是C++和QT共有的一个操作符即时使用实时就析构删除了,而QT里的deletelater的原理是:QObject::deleteLater()并没有将对象立即销毁,而是向主消息循环发送了一个event,下一次主消息循环收到这个event之后才会销毁对象。 这样做的好处是可以在这些延迟删除的时间内完成一些操作,坏处就是内存释放会不及时。
应用例子:父窗体的子窗体在focusoutevent时deletelater();然后在主窗体绑定信号子窗体的destroy()信号和父窗体的槽函数
然后在槽函数中象父窗体调用父窗体的接口函数向父窗体发送子窗体的文本text();
来源:51CTO
作者:搁浅的渔
链接:https://blog.csdn.net/qq_36583051/article/details/100134555