pyqt listwidget加筛选功能

时间: 2023-07-04 14:24:01 浏览: 240
DOC

Qt下使用ListWidget

star5星 · 资源好评率100%
要在 PyQt 的 ListWidget 中添加筛选功能,可以通过以下步骤实现: 1. 创建一个 QLineEdit 控件用于输入筛选条件。 2. 创建一个 QSortFilterProxyModel 控件用于过滤 ListWidget 中的项。 3. 将 QSortFilterProxyModel 控件设置为 ListWidget 的模型,并将 QLineEdit 控件与 QSortFilterProxyModel 控件关联。 下面是一个示例代码,可以作为参考: ```python from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QListWidget, QLineEdit, QSortFilterProxyModel from PyQt5.QtCore import Qt class FilteredListWidget(QWidget): def __init__(self): super().__init__() # 创建 ListWidget 和 QLineEdit 控件 self.list_widget = QListWidget() self.line_edit = QLineEdit() # 创建 QSortFilterProxyModel 控件 self.proxy_model = QSortFilterProxyModel() self.proxy_model.setSourceModel(self.list_widget.model()) # 将 QLineEdit 控件与 QSortFilterProxyModel 控件关联 self.line_edit.textChanged.connect(self.proxy_model.setFilterRegExp) # 设置 ListWidget 的模型为 QSortFilterProxyModel 控件 self.list_widget.setModel(self.proxy_model) # 设置布局 layout = QVBoxLayout() layout.addWidget(self.line_edit) layout.addWidget(self.list_widget) self.setLayout(layout) # 添加一些示例项 for i in range(10): self.list_widget.addItem(f"Item {i}") if __name__ == "__main__": app = QApplication([]) window = FilteredListWidget() window.show() app.exec_() ``` 在这个示例中,我们创建了一个继承自 QWidget 的 FilteredListWidget 类,该类包含了一个 ListWidget 和一个 QLineEdit 控件。我们创建了一个 QSortFilterProxyModel 控件,并将其设置为 ListWidget 的模型。我们还将 QLineEdit 控件的 textChanged 信号与 QSortFilterProxyModel 控件的 setFilterRegExp 方法关联,以实现实时过滤 ListWidget 中的项。最后,我们添加了一些示例项,以便进行测试。
阅读全文

相关推荐