gpt4 book ai didi

python - PyQT崩溃(底层C/C++对象已被删除) “after” clear QTreeWidget

转载 作者:行者123 更新时间:2023-12-03 16:55:52 26 4
gpt4 key购买 nike

我尝试为QTreeWidget建立实时搜索,这意味着我有一个QLineEdit,并且在我键入内容时,我将在QTreeWidget中过滤显示的结果。

目前,我通过QTreeWidget.findItems()获得了“仍显示的项目”

foundItems  = mainForm.ui.treeShips.findItems(text,QtCore.Qt.MatchContains)

稍后我用清除QTreeWidget(mainForm.ui.treeShips)
mainForm.ui.treeShips.clear()

然后我想添加“仍显示的项目”
mainForm.ui.treeShips.addTopLevelItems(foundItems)

但是然后程序崩溃,并显示“底层C / C++对象已被删除”错误

我的第一个想法是,清除treeShips时,也会清除foundItems的内容,这会导致foundItems(print(foundItems))的对象和treeShips的对象具有相同的地址,并且当程序要使用此列表时,它崩溃。

有人知道如何解决它,
还是有更好的主意来应用这样的“搜索过滤器”?

(我希望我能正确描述我的问题:))

谢谢和最诚挚的问候

最佳答案

我发现基于Neox的第二个想法的解决方法。

我迭代树中的所有项目,并将隐藏标志设置为true(setHidden(True))
然后我迭代foundItems并将隐藏标志设置为false(我认为这是可行的,因为两个列表的地址相同)

for item in mainForm.ui.treeShips.findItems("",QtCore.Qt.MatchContains):
item.setHidden(True)

for item in foundItems:
item.setHidden(False)

但我不知道这是否不是一种肮脏的方式,但是它有效:)

我希望这会帮助其他有相同问题的人。

关于python - PyQT崩溃(底层C/C++对象已被删除) “after” clear QTreeWidget,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9230005/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com