python - PySide:有时我删除和添加项目时 QListWIdget 项目消失
问题描述
我有一个带有自定义小部件的 QListWidget。如果我执行以下操作,我会看到一个问题:
- 添加两个项目
- 删除第二项
- 添加另一个项目
然后第一项的小部件内容消失,直到我调整窗口大小或添加第三项。
import sys
from PySide.QtGui import *
from PySide.QtCore import *
class StagingWidget(QGroupBox):
def __init__(self,parent=None):
#QWidget.__init__(self,parent)
super(StagingWidget,self).__init__()
self.itemWidgets = list()
self.count = 1
self.createUi()
def createUi(self):
self.widget_layout=QVBoxLayout(self)
self.list_widget=QListWidget()
self.setFixedWidth(450)
self.setFixedHeight(600)
self.list_widget.setStyleSheet("QListWidget::item:selected{background:lightblue}")
self.widget_layout.addWidget(self.list_widget)
self.buttonHLayout = QHBoxLayout()
self.add = QPushButton("Add Item")
self.add.clicked.connect(self.addListItem)
self.buttonHLayout.addWidget(self.add)
self.widget_layout.addLayout(self.buttonHLayout)
def addListItem(self):
itemN = QListWidgetItem()
widget = QWidget()
Button1 = QPushButton(str(self.count))
Button2 = QPushButton("Remove")
Button2.clicked.connect(lambda item=itemN:self.removeJob(item))
widgetLayout = QHBoxLayout()
widgetLayout.addWidget(Button1)
widgetLayout.addWidget(Button2)
widget.setLayout(widgetLayout)
itemN.setSizeHint(widget.sizeHint())
self.itemWidgets.append(widget)
self.list_widget.addItem(itemN)
self.list_widget.setItemWidget(itemN, self.itemWidgets[-1])
self.count = self.count + 1
def removeJob(self,item):
print("Removing Job")
row = self.list_widget.indexFromItem(item).row()
self.list_widget.takeItem(row)
if __name__ == '__main__':
app = QApplication(sys.argv)
widget = StagingWidget()
widget.show()
sys.exit(app.exec_())
示例:添加 1 项:
添加另一个项目:
删除第 2 项:
添加另一个项目(您可以看到项目 1 的小部件消失):
添加另一个项目(项目 1 的小部件重新出现):
每次我执行上述步骤时都会发生这种情况。
解决方案
推荐阅读
- html - 根据弹性项目的数量确定容器的宽度
- javascript - Httpclient 返回未定义的响应
- gnuplot - 如何修复'GNUPlot不绘制二维轮廓数据的第一个点,通过绘制到表格生成
- javascript - 如何使用正则表达式仅获取字符串的特定部分?
- angular7 - 在 onsubmit 中收到 http 错误后重新验证 Angular 控件
- java - 使用 ProcessBuilder 在 Windows 上启动 java Minecraft 服务器
- javascript - Firebase 通知在关闭的 iOS RN 应用程序上不起作用
- javascript - Discord.js bot 没有权限管理昵称
- javascript - 组件卸载后正确删除事件处理程序
- android - 返回 Null 的值事件侦听器