2

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 アイテムも機能せずにリストを空にします。

どうやってやるの ?

ありがとう

4

3 に答える 3

5

これはすでに回答されていることは知っていますが、選択したアイテムを削除する方法を見つけるためにこの質問に出くわしました。

これは次のように実行できます。

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

これが誰かを助けることを願っています!

于 2013-05-08T12:34:14.890 に答える
3

QListWidgetでclearメソッドを使用しないのはなぜですか?

于 2010-11-17T14:46:12.550 に答える
0

実際、removeItemWidgetはこの目的では機能しません。

これが私の解決策です

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

メソッドtakeItem(0)は、スタック内のpop()のように機能し、takeItem(count()-1)はキュー内のpop()のように機能します。

于 2010-11-17T13:17:36.487 に答える