2010-11-17 420 views
2

我正在使用QListWidget來顯示QListWidgetItem列表如何從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方法工作,沖洗方法打印每個項目的文本,但也不removeItemWidget方法也不德爾項工程,以清空列表。

我該怎麼做?

謝謝

回答

2

爲什麼不在QListWidget上使用clear方法?

+0

其實這正是我所期待的。 – Natim 2010-11-23 10:21:06

0

實際上,removeItemWidget不適用於此目的。

這裏是我的解決方案

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

的方法takeItem(0)的作品就像一個堆棧和takeItem彈出()(計數() - 1)就像在一個隊列中的pop()方法。

4

我知道這是already answered,但我遇到了這個問題找到一種方法來刪除選定的項目。

這是可以做到像這樣:

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

希望這有助於有人出來!

相關問題