كيف يمكنني إزالة QListWidgetItem من QListWidget وتحديث الشاشة؟

StackOverflow https://stackoverflow.com/questions/4203312

  •  25-09-2019
  •  | 
  •  

سؤال

أنا أستخدم 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 Method ولا عنصر DEL يعمل على تفريغ القائمة.

كيف أقوم بذلك ؟

شكرًا

هل كانت مفيدة؟

المحلول

لماذا لن تستخدم طريقة واضحة على QListWidget؟

نصائح أخرى

أعلم أن هذا تمت الاجابة مسبقا, ، لكنني صادفت هذا السؤال لإيجاد طريقة للحذف المحدد أغراض).

يمكن القيام بذلك مثل:

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

آمل أن يساعد هذا شخص هناك!

في الواقع ، لا يعمل RemoveItemWidget لهذا الغرض.

هذا هو الحل الخاص بي

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

تعمل الطريقة TakeItem (0) مثل pop () في مكدس و takeItem (count ()-1) مثل pop () في قائمة انتظار.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top