提问者:小点点

PYQT5:不能重新加载以前使用过的QWidget?


我目前正在为我目前工作的学生宿舍编程一些酒吧标签保存的东西。 为此,我有两个不同的QScrollAreas,其中有两个QWidget,每个QGridLayout。 一个用于用户选择,另一个用于选择要购买的物品。

当我用self.scrollarea.SetWidget(self.ItemWidget)切换到项目选择界面时,一切都很正常,但是我还实现了一个返回按钮,以防选择了错误的用户,该按钮应该返回到启动的第一个QWidget:self.scrollarea.SetWidget(self.UserWidget),在我看来,该按钮应该再次加载以前构建的布局,但是我得到了以下错误:

运行时错误:已删除QWidget类型的包装C/C++对象

我哪里出错了? 有人能帮帮我吗?


共1个答案

匿名用户

setWidget()的文档清楚地指出:

小部件成为滚动区域的子部件,当删除滚动区域或设置新的小部件时,小部件将被销毁。

您需要做的是在设置另一个小部件之前首先调用TakeWidget()

或者,您可以使用QStakedWidget作为两个小部件的容器。