2

我正在使用 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 都不能清空列表。

我怎样才能做到这一点 ?

谢谢

4

3 回答 3

5

我知道这已经得到解答,但我遇到了这个问题,以找到删除所选项目的方法。

这可以这样做:

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

希望这可以帮助那里的人!

于 2013-05-08T12:34:14.890 回答
3

为什么不在 QListWidget 上使用 clear 方法?

于 2010-11-17T14:46:12.550 回答
0

实际上, removeItemWidget 不适用于此目的。

这是我的解决方案

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

方法 takeItem(0) 的工作方式类似于堆栈中的 pop(),而 takeItem(count()-1) 类似于队列中的 pop()。

于 2010-11-17T13:17:36.487 回答