我要在输入搜索栏时隐藏不相关的结果,并且一旦清除搜索栏以再次显示listWidget中的所有项目。
老实说,我不确定该怎么做,因为我是编程的新手(从3周前开始)。目前,我正在考虑可以执行if> then语句来隐藏项目,但是我不知道如何使用findItems()方法进行处理。
def searchItem(self):
search_string = self.textEdit.toPlainText() """pulling the text from a text edit box"""
items = self.listWidget.findItems(search_string, Qt.MatchContains)
for item in items:
if item:
item.setHidden(False)
else:
item.setHidden(True)
目前,这基本上什么都不做。如果我添加Print(item.text()),它只会打印相关项目,使我觉得自己处在正确的轨道上。
感谢您的任何建议。
最佳答案
您应该做的是遍历QListWidget中的所有项目,而不仅仅是与文本匹配的项目,如果项目不在匹配的项目中,则将其隐藏。
def searchItem(self):
search_string = self.textEdit.toPlainText()
match_items = self.listWidget.findItems(search_string, Qt.MatchContains)
for i in range(self.listWidget.count()):
it = self.listWidget.item(i)
it.setHidden(it not in match_items)
关于python - 使用QlistWidget进行主动搜索,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57764723/