Как я могу удалить QListWidgetItem из QListWidget и обновить отображение? - PullRequest
2 голосов
/ 17 ноября 2010

Я использую 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 del не работают для очистки списка.

Как я могу это сделать?

Спасибо

Ответы [ 3 ]

4 голосов
/ 08 мая 2013

Я знаю, что уже ответил , но я наткнулся на этот вопрос, чтобы найти способ удалить выбранный элемент (ы).

Это можносделано так:

def removeSelected(self):
    for item in self.selectedItems():
        self.takeItem(self.row(item))

Надеюсь, это кому-нибудь поможет!

2 голосов
/ 17 ноября 2010

Почему не использовать метод clear в QListWidget?

0 голосов
/ 17 ноября 2010

На самом деле, removeItemWidget не работает для этой цели.

Вот мое решение

def flush(self):
    while self.count() > 0:
        self.takeItem(0)

Метод takeItem (0) работает как pop () в стеке, а takeItem (count () - 1) как pop () в очереди.

...