QListWidget实现筛选功能
时间: 2023-11-28 07:06:43 浏览: 404
ListTestWgt.zip
QListWidget可以通过设置过滤器来实现筛选功能。具体步骤如下:
1. 创建QListWidget对象并添加QListWidgetItem。
2. 调用QListWidget的setSelectionMode方法设置选择模式为单选。
3. 创建QLineEdit对象作为筛选输入框。
4. 通过调用QLineEdit的textChanged信号连接一个槽函数,用于根据输入内容进行筛选。
5. 在槽函数中,通过调用QListWidget的setHidden方法将不符合筛选条件的QListWidgetItem隐藏起来。
示例代码如下:
```python
from PyQt5.QtWidgets import QApplication, QListWidget, QListWidgetItem, QLineEdit
app = QApplication([])
list_widget = QListWidget()
list_widget.addItem(QListWidgetItem('item 1'))
list_widget.addItem(QListWidgetItem('item 2'))
list_widget.addItem(QListWidgetItem('item 3'))
list_widget.addItem(QListWidgetItem('item 12'))
list_widget.addItem(QListWidgetItem('item 23'))
list_widget.setSelectionMode(QListWidget.SingleSelection)
search_line_edit = QLineEdit()
search_line_edit.setPlaceholderText('Search...')
search_line_edit.textChanged.connect(lambda: filter_list(search_line_edit.text(), list_widget))
def filter_list(search_text, list_widget):
for i in range(list_widget.count()):
item = list_widget.item(i)
if search_text in item.text():
item.setHidden(False)
else:
item.setHidden(True)
search_line_edit.show()
list_widget.show()
app.exec_()
```
在上面的示例代码中,我们创建了一个QListWidget并向其中添加了5个QListWidgetItem。同时,我们创建了一个QLineEdit作为筛选输入框,并通过textChanged信号连接了一个槽函数filter_list。在filter_list函数中,我们遍历了QListWidget中的所有QListWidgetItem,根据输入内容判断是否符合筛选条件,符合则设置为不隐藏,不符合则设置为隐藏。最后,将QLineEdit和QListWidget显示出来。运行程序后,在QLineEdit中输入内容即可实现列表项的筛选功能。
阅读全文