如何从 QListWidget 中删除 QListWidgetItem 并刷新显示?

发布于 2024-10-03 02:30:03 字数 1071 浏览 10 评论 0原文

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

我怎样才能做到这一点?

谢谢

I am using a QListWidget to display a list of QListWidgetItem

This list is read from a file. When I close the file, I want to empty the list.

I did this method on my :

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

The loadQuiz method works, the flush method print the text of each item but nor removeItemWidget method nor del item works to empty the list.

How can I do that ?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

拧巴小姐 2024-10-10 02:30:03

我知道这是已经回答了,但我遇到这个问题是为了找到一种删除所选内容的方法强> 项目。

可以这样做:

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

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

I know this is already answered, but I came across this question to find a way to delete the selected item(s).

This can be done like so:

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

Hope this helps someone out there!

双手揣兜 2024-10-10 02:30:03

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

Why wont use clear method on QListWidget ?

云胡 2024-10-10 02:30:03

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

这是我的解决

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

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

Actually, removeItemWidget doesn't work for this purpose.

Here is my solution

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

The method takeItem(0) works like a pop() in a Stack and takeItem(count()-1) like a pop() in a queue.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文