PyQt4:如何遍历QListWidget中的所有项
目前,我在一个继承自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)
这个方法还挺懒的(用的是生成器)。