qtablewidget表格数据筛选
时间: 2025-04-28 17:35:31 浏览: 34
### 实现 QTableWidget 数据筛选
为了实现在 Qt 的 `QTableWidget` 中进行数据筛选的功能,可以采用多种方式。一种常见的方式是在表头上添加筛选框,允许用户输入关键字来进行过滤[^3]。
下面是一个具体的 Python PyQt5 示例代码,展示了如何在 `QTableWidget` 上实现基于表头的简单文本筛选功能:
```python
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QHeaderView, QLineEdit, QPushButton, QTableWidgetItem, QTableWidget
class TableFilter(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('QTableWidget Filter Example')
layout = QVBoxLayout(self)
# 创建表格并填充初始数据
self.table_widget = QTableWidget(5, 3)
headers = ["ID", "Name", "Age"]
self.table_widget.setHorizontalHeaderLabels(headers)
data = [
("001", "Alice", "28"),
("002", "Bob", "24"),
("003", "Charlie", "32"),
("004", "David", "29"),
("005", "Eve", "27")
]
for row_index, (id_, name, age) in enumerate(data):
self.table_widget.setItem(row_index, 0, QTableWidgetItem(id_))
self.table_widget.setItem(row_index, 1, QTableWidgetItem(name))
self.table_widget.setItem(row_index, 2, QTableWidgetItem(age))
header = self.table_widget.horizontalHeader()
header.setSectionResizeMode(QHeaderView.Stretch)
# 添加搜索栏位
search_layout = QHBoxLayout()
self.search_boxes = []
for i in range(len(headers)):
line_edit = QLineEdit()
line_edit.setPlaceholderText(f'Search {headers[i]}...')
line_edit.textChanged.connect(lambda text, col=i: self.filter_table(text, col))
search_layout.addWidget(line_edit)
self.search_boxes.append(line_edit)
layout.addLayout(search_layout)
layout.addWidget(self.table_widget)
def filter_table(self, text, column):
"""根据给定列的内容进行匹配"""
rows = self.table_widget.rowCount()
for rowIndex in range(rows):
item = self.table_widget.item(rowIndex, column)
if not item or (text.lower() not in str(item.text()).lower()):
self.table_widget.hideRow(rowIndex)
else:
self.table_widget.showRow(rowIndex)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = TableFilter()
window.resize(600, 400)
window.show()
sys.exit(app.exec_())
```
此段代码创建了一个带有三个字段(ID、姓名和年龄)的小型数据库,并提供了每列表头上的独立搜索框让用户能够针对特定列执行字符串匹配操作来隐藏不符合条件的行。
阅读全文
相关推荐



















