PyQt4:如何遍历QListWidget中的所有项

23 投票
6 回答
50670 浏览
提问于 2025-04-16 09:35

目前,我在一个继承自QtGui.QListWidget的类中使用以下的while循环来遍历所有的项目:

    i = 0
    while i < self.count():
        item = self.item(i)

        i += 1

我本来希望可以使用:

for item in self.items():

但是items()这个方法需要一个QMimeData对象,而我不知道怎么构造这个对象来返回所有的项目。有没有比我上面的while循环更简单的方法呢?

6 个回答

12

我知道这个问题有点老了,但我刚发现QListWidget里有个函数叫做 findItems(text, Qt.MatchFlags)。所以,如果你想遍历所有的项目,可以这样做:

#listWidget is a QListWidget full of items
all_items = listWidget.findItems('', QtCore.Qt.MatchRegExp)
for item in all_items:
  print item

然后你可以对每个项目做你需要的事情 =)

14

我想补充一下我的看法,因为我在找这个内容:

itemsTextList =  [str(listWidget.item(i).text()) for i in range(listWidget.count())]
27

我也不太明白MIME类型是什么,而且我也找不到什么方便的方法。不过你可以写一个简单的方法,就可以解决这个问题了:

def iterAllItems(self):
    for i in range(self.count()):
        yield self.item(i)

这个方法还挺懒的(用的是生成器)。

撰写回答