如何从QListWidget中移除QListWidgetItem并刷新显示?
我正在使用QListWidget来显示一个QListWidgetItem的列表。
这个列表是从一个文件中读取的。当我关闭文件时,我想清空这个列表。
我在我的代码中这样做了:
class QuestionsList(QtGui.QListWidget):
def __init__(self, parent):
super(QuestionsList, self).__init__(parent)
self.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
self.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)
self.setProperty("showDropIndicator", False)
self.setAlternatingRowColors(True)
self.quiz = None
def loadQuiz(self, quiz):
self.quiz = quiz
self.flush()
if quiz is not None:
i = 1
for question in quiz.questions_list:
self.addItem(QuestionItem(i, question, self))
i += 1
def flush(self):
for item in [self.item(i) for i in xrange(self.count())]:
print unicode(item.text())
self.removeItemWidget(item)
del item
loadQuiz方法可以正常工作,flush方法可以打印出每个项目的文本,但removeItemWidget方法和del item都无法清空列表。
我该怎么做呢?
谢谢!
3 个回答
0
其实,removeItemWidget这个方法并不适合这个用途。
这是我的解决方案:
def flush(self):
while self.count() > 0:
self.takeItem(0)
takeItem(0)这个方法的作用就像在栈(Stack)中使用pop(),而takeItem(count()-1)就像在队列(queue)中使用pop()。
5
我知道这个问题已经有人回答过了,但我还是想分享一下我找到的删除选中的项目的方法。
可以这样做:
def removeSelected(self):
for item in self.selectedItems():
self.takeItem(self.row(item))
希望这对某些人有帮助!
3
为什么在QListWidget上不能使用clear方法?