每次需要从QListWidget列表中删除项时,我都会使用myItem.hide()方法。隐藏项目而不是删除/移除会使事情变得不必要的复杂。如果你能告诉我如何从ListWidget中永久删除项目,我将不胜感激。
from PyQt4 import QtGui, QtCore
class MyApp(object):
def __init__(self):
super(MyApp, self).__init__()
self.mainWidget = QtGui.QWidget()
self.mainLayout = QtGui.QVBoxLayout()
self.mainWidget.setLayout(self.mainLayout)
self.hLayout = QtGui.QHBoxLayout()
self.mainLayout.insertLayout(0, self.hLayout)
self.listA=QtGui.QListWidget()
for i in range(3):
self.listA.addItem('Item '+str(i))
self.hLayout.addWidget(self.listA)
self.buttonGroupbox = QtGui.QGroupBox()
self.buttonlayout = QtGui.QVBoxLayout()
self.buttonGroupbox.setLayout(self.buttonlayout)
okButton = QtGui.QPushButton('Remove Selected')
okButton.clicked.connect(self.removeSel)
self.buttonlayout.addWidget(okButton)
self.mainLayout.addWidget(self.buttonGroupbox)
self.mainWidget.show()
sys.exit(app.exec_())
def removeSel(self):
listItems=self.listA.selectedItems()
if not listItems: return
for item in listItems:
print type(item), dir(item)
我不知道为什么,但removietemwidget不能按预期工作。您必须使用take item代替:
在这里发布一个示例,展示如何实现相同的方法,但现在应用于
QTreeWidget
,这比QListWidget
更复杂。ListWidget是ListWidgetItems的列表。可以为ListWidgetItems分配一个自定义小部件来覆盖默认小部件,因此removeItemWidget()只删除自定义小部件。因此需要takeItem,它从列表中弹出项目并返回它(类似于python列表的工作方式)
相关问题 更多 >
编程相关推荐