Como posso remover um QlistWidgetItem de um QListWidget e atualizar a tela?
Pergunta
Estou usando um QlistWidget para exibir uma lista de QlistWidgetItem
Esta lista é lida em um arquivo. Quando fecho o arquivo, quero esvaziar a lista.
Eu fiz este método no meu:
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
O método loadQuiz funciona, o método de descarga imprimir o texto de cada item, mas nem remover o métodowidget, nem o item Del funciona para esvaziar a lista.
Como eu posso fazer isso ?
Obrigado
Solução
Por que não usar o método claro no QLISTWIDGET?
Outras dicas
Eu sei que isso é já respondido, mas me deparei com essa pergunta para encontrar uma maneira de excluir O selecionado Itens).
Isso pode ser feito assim:
def removeSelected(self):
for item in self.selectedItems():
self.takeItem(self.row(item))
Espero que isto seja útil a alguém!
Na verdade, o RemoneItemwidget não funciona para esse fim.
Aqui está minha solução
def flush(self):
while self.count() > 0:
self.takeItem(0)
O método TakeItem (0) funciona como um pop () em uma pilha e tomada (contagem ()-1) como um pop () em uma fila.