欢迎!
我正在尝试使用PyQT创建我自己的gui应用程序(我想是5)。主窗口由菜单栏、状态栏和中央小部件组成。中央小部件是QTabWidget。在每个选项卡中都有自己的工作区小部件。
程序本身允许创建OpenFOAM阶段的流水线,为每个进程设置选项并启动它。这一切都是在一个小部件中完成的,这是选项卡中唯一的小部件。
我遇到的问题与QLayout有关。在启动任务的每一步中,我都使用QHBoxLayout的组合。当我制作初始self.setLayout(somelayout1)
时,它运行良好。但是,当我在这个小部件的类self.setLayout(somelayout2)
、self.setLayout(somelayout3)
等的不同方法中进行下一步操作时,新布局将绘制在所有先前布局的顶部。更重要的是:以前布局中没有被新布局覆盖的所有层的部分都保持活动!
还没有找到任何禁用小部件旧布局的工作方法,或者更好的方法:删除它。已经尝试过创建一个1元素的布局容器,并用self.layout().removeItem(0)
和self.layout().setLayout(newlayout)
(或.inserLayout(newlayout)
)影响它,但没有区别。
有没有任何工作方法可以改变小部件的布局而不在背面显示旧的布局?
谢谢你的帮助。
p.s.:self.setStyleSheet("QWidget { background-color: rgb(255, 255, 255) }")
CCD_ 8均无效。
确保从旧布局中删除小部件的方法是使用sip.delete(somewidget)
。这将删除C++对象本身(因为有时它保持自己的存在)