重新设置widget的布局pyqt
我想用PyQT创建我自己的gui app(5我猜)。那么,mainwindow由菜单栏,状态栏和中央部件组成。中央部件是QTabWidget。在每个标签中都有它自己的工作场所小部件。
程序本身允许创建一个OpenFOAM阶段的管道,为每个进程设置选项并启动它。这一切都是在一个小部件中制作的,它是标签中唯一的小部件。
我遇到的问题连接到QLayout。我正在使用QHBoxLayout s和QVBoxLayout s组合启动任务的每个步骤。当我开始初始self.setLayout(somelayout1)
它工作正常。但是,当我使用此小部件的类self.setLayout(somelayout2)
,self.setLayout(somelayout3)
等的不同方法进行下一步操作时,新布局将变为正在绘制在所有先前布局的顶部。不仅如此:以前布局的所有图层中未被新图层覆盖的部分仍保持活跃状态!
尚未找到任何禁用旧版布局的工作方法,或者更好:删除它。已经尝试过,甚至创造1元的布局容器中,用self.layout().removeItem(0)
和self.layout().setLayout(newlayout)
(或.inserLayout(newlayout)
影响,但没有任何区别。
是否有任何的工作方法来改变小窗口的布局,而不出现在一个旧的擦屁股
感谢您的帮助
PS:?。self.setStyleSheet("QWidget { background-color: rgb(255, 255, 255) }")
既不QObjectCleanupHandler().add(self.layout())
都毫无效果
的方式,以确保从旧布局删除widget是USI ng sip.delete(somewidget)
。这会删除C++对象本身(因为它有时会自己保留)
[QStackedWidget](https://doc.qt.io/qt-5/qstackedwidget.html)。 – ekhumoro
@ekhumoro我会尝试,并留下回复,谢谢! – Amphyby
PS:要删除布局及其所有小部件,请参阅[本答案](http://stackoverflow.com/a/9383780/984421)。 – ekhumoro