我目前正在为我目前工作的学生宿舍编程一些酒吧标签保存的东西。 为此,我有两个不同的QScrollAreas,其中有两个QWidget,每个QGridLayout。 一个用于用户选择,另一个用于选择要购买的物品。
当我用self.scrollarea.SetWidget(self.ItemWidget)
切换到项目选择界面时,一切都很正常,但是我还实现了一个返回按钮,以防选择了错误的用户,该按钮应该返回到启动的第一个QWidget:self.scrollarea.SetWidget(self.UserWidget)
,在我看来,该按钮应该再次加载以前构建的布局,但是我得到了以下错误:
运行时错误:已删除QWidget类型的包装C/C++对象
我哪里出错了? 有人能帮帮我吗?
setWidget()
的文档清楚地指出:
小部件成为滚动区域的子部件,当删除滚动区域或设置新的小部件时,小部件将被销毁。
您需要做的是在设置另一个小部件之前首先调用TakeWidget()
。
或者,您可以使用QStakedWidget
作为两个小部件的容器。