PyQt5: 不能重载以前使用过的QWidget?

问题描述 投票:0回答:1

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

当我切换到项目选择界面时,一切都很好,我的工作是在这里。self.scrollArea.setWidget(self.itemWidget)然而,我还实现了一个后退按钮,以防选择了错误的用户,它应该返回到第一个QWidget启动。self.scrollArea.setWidget(self.userWidget)在我看来,这应该只是再次加载之前建立的Layout,但我却得到了这个错误。

RuntimeError: wrapped C/C++ object of type QWidget has been deleted

我哪里做错了?谁能帮我解决这个问题?

python qt pyqt pyqt5 qt5
1个回答
0
投票

文件的 setWidget() 明确指出。

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

你需要做的是调用 takeWidget() 在设置另一个小组件之前,您可以先使用

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

© www.soinside.com 2019 - 2024. All rights reserved.