qt create tablewidget 基于一列搜索字段,隐藏没有匹配到的行 类似find Item
时间: 2024-02-27 15:57:08 浏览: 136
QT-TableWidget多个列和行,合并显示效果自
5星 · 资源好评率100%
您可以使用QLineEdit和QPushButton创建一个搜索框和搜索按钮,然后在点击搜索按钮时,遍历QTableWidget中的每一行并检查每一列是否与搜索字段匹配。如果没有匹配项,就隐藏该行。以下是一个简单的示例代码:
```python
from PyQt5.QtWidgets import QApplication, QWidget, QTableWidget, QTableWidgetItem, QLineEdit, QPushButton
class Example(QWidget):
def __init__(self):
super().__init__()
# 创建一个QTableWidget
self.table = QTableWidget(self)
self.table.setGeometry(50, 50, 400, 300)
self.table.setColumnCount(3)
self.table.setHorizontalHeaderLabels(['Name', 'Age', 'Gender'])
self.table.setRowCount(5)
# 添加一些数据
self.table.setItem(0, 0, QTableWidgetItem('John'))
self.table.setItem(0, 1, QTableWidgetItem('30'))
self.table.setItem(0, 2, QTableWidgetItem('Male'))
self.table.setItem(1, 0, QTableWidgetItem('Lisa'))
self.table.setItem(1, 1, QTableWidgetItem('25'))
self.table.setItem(1, 2, QTableWidgetItem('Female'))
self.table.setItem(2, 0, QTableWidgetItem('Bob'))
self.table.setItem(2, 1, QTableWidgetItem('40'))
self.table.setItem(2, 2, QTableWidgetItem('Male'))
self.table.setItem(3, 0, QTableWidgetItem('Mary'))
self.table.setItem(3, 1, QTableWidgetItem('35'))
self.table.setItem(3, 2, QTableWidgetItem('Female'))
self.table.setItem(4, 0, QTableWidgetItem('David'))
self.table.setItem(4, 1, QTableWidgetItem('28'))
self.table.setItem(4, 2, QTableWidgetItem('Male'))
# 创建一个搜索框和搜索按钮
self.search_box = QLineEdit(self)
self.search_box.setGeometry(50, 10, 200, 30)
self.search_button = QPushButton('Search', self)
self.search_button.setGeometry(260, 10, 80, 30)
self.search_button.clicked.connect(self.search)
self.show()
def search(self):
# 获取搜索字段
keyword = self.search_box.text().lower()
# 遍历每一行并检查是否匹配搜索字段
for row in range(self.table.rowCount()):
match = False
for col in range(self.table.columnCount()):
item = self.table.item(row, col)
if item.text().lower().startswith(keyword):
match = True
break
# 如果该行没有匹配项,就隐藏该行
self.table.setRowHidden(row, not match)
if __name__ == '__main__':
app = QApplication([])
ex = Example()
app.exec_()
```
在这个示例中,我们创建了一个包含5行3列数据的QTableWidget,并添加了一个搜索框和搜索按钮。当用户在搜索框中输入关键字并点击搜索按钮时,程序将会遍历每一行并检查是否存在与搜索字段匹配的项。如果没有匹配项,就隐藏该行。
阅读全文