python - PyQt5:无法重新加载以前使用的 QWidget?
问题描述
我目前正在为我目前工作的学生宿舍编写某种酒吧标签保存的东西。为此,我有两个不同的 QScrollAreas 和两个 QWidget,每个 QGridLayout 都有一个。一个用于用户选择,另一个用于选择要购买的项目。
当我使用 切换到项目选择界面时一切正常
self.scrollArea.setWidget(self.itemWidget)
,但是我还实现了一个后退按钮,以防选择了错误的用户,这应该回到第一个 QWidget 启动:self.scrollArea.setWidget(self.userWidget)
,在我看来应该只是加载以前构建的再次布局,但我收到此错误:
RuntimeError: wrapped C/C++ object of type QWidget has been deleted
我哪里做错了?有谁可以帮我离开这里吗?
解决方案
文档setWidget()
明确指出:
小部件成为滚动区域的子级,并在删除滚动区域或设置新的小部件时被销毁。
您需要做的是takeWidget()
在设置另一个小部件之前先调用。
或者,您可以使用 aQStackedWidget
作为两个小部件的容器。
推荐阅读
- javascript - 我在 shopify 中添加了两个自定义输入字段(宽度和高度),如何连接他们的自定义价格以添加到购物车?
- azure - 如何配置基于条件的管道 | Azure 管道
- django-rest-framework - DRF - 应用 TokenAuthentication 时如何允许未经授权的请求
- javascript - 如何在应用程序 webview 上向 body 标签添加类?
- swift - 如何在带有 Objective-C 代码的项目中使用 RxSwift?
- typescript - 无法在 Web 组件类中设置属性
- design-patterns - 混合应用程序的选项
- android - 在 Android 上禁用 Toast
- reactjs - 我想用 React js 写其他语言的代码
- c - 我可以使用 libav 流式传输实时音频吗?