Pyqt通过组合框选择过滤QListWidget

时间:2018-06-23 15:49:56

标签: python qcombobox qlistwidget pyside2 qlistwidgetitem

我有一个带有qlistwidget和一个组合框的gui,应用作过滤器,例如。每个listwidgetitem都有一个变量nodeclass,并且组合框允许用户仅显示指定节点类的项目,但也可以显示全部。这是由于更改组合框而触发的当前代码:self.comboBox_filter.currentIndexChanged.connect(self.listItemFilter)

def listItemFilter(self):
    itemlist = self.getAllListItems()
    filter = str(self.comboBox_filter.currentText())
    print "Filtering :", itemlist, " for ", filter

    self.listWidget_links.clear()

    for item in itemlist:
        if filter == "all":
            self.listWidget_links.addItems(itemlist)

        elif filter == "Read":
            if item.nodeclass == filter:
                self.listWidget_links.addItem(item)

        elif filter == "Dot":
            if item.nodeclass == filter:
                self.listWidget_links.addItem(item)

        elif filter == "Camera":
            if item.nodeclass == filter:
                self.listWidget_links.addItem(item)

这当然是行不通的,因为我清除了列表,然后尝试访问项目属性,也称为RuntimeError: Internal C++ object (PySide2.QtWidgets.QListWidgetItem) already deleted.

因此,如何正确过滤列表,最重要的是,当将其设置为“读取”之类的过滤器,然后又返回“全部”时,我不想丢失任何对象。我希望不要弄乱原始的“所有”列表数据,而只是临时显示过滤器结果(如果用户在组合框中设置了过滤器) 谢谢您的帮助!

0 个答案:

没有答案