【问题标题】:How can I remove a QListWidgetItem from a QListWidget and refresh the display?如何从 QListWidget 中删除 QListWidgetItem 并刷新显示?
【发布时间】:2011-05-11 08:08:19
【问题描述】:

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

我该怎么做?

谢谢

【问题讨论】:

    标签: python qt4 pyqt pyside


    【解决方案1】:

    我知道这是already answered,但我遇到这个问题是为了找到删除所选项的方法。

    可以这样做:

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

    希望这对那里的人有所帮助!

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 其实这正是我想要的。
      【解决方案3】:

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

      这是我的解决方案

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-03
        • 2017-12-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多