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

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top