qtablewidget筛选
时间: 2023-10-04 22:09:55 浏览: 173
QTableWidget可以通过QLineEdit来实现筛选。你可以将QLineEdit的输入与QTableWidget的数据进行比较,并将满足条件的行显示在QTableWidget中。以下是一个基本的示例代码:
```
from PyQt5.QtWidgets import QApplication, QWidget, QTableView, QVBoxLayout, QLineEdit, QTableWidgetItem
from PyQt5.QtCore import Qt
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(300, 300, 500, 300)
self.setWindowTitle('QTableWidget Filter')
self.table = QTableView()
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('25'))
self.table.setItem(0, 2, QTableWidgetItem('Male'))
self.table.setItem(1, 0, QTableWidgetItem('Mary'))
self.table.setItem(1, 1, QTableWidgetItem('32'))
self.table.setItem(1, 2, QTableWidgetItem('Female'))
self.table.setItem(2, 0, QTableWidgetItem('Bob'))
self.table.setItem(2, 1, QTableWidgetItem('18'))
self.table.setItem(2, 2, QTableWidgetItem('Male'))
self.table.setItem(3, 0, QTableWidgetItem('Alice'))
self.table.setItem(3, 1, QTableWidgetItem('27'))
self.table.setItem(3, 2, QTableWidgetItem('Female'))
self.table.setItem(4, 0, QTableWidgetItem('Tom'))
self.table.setItem(4, 1, QTableWidgetItem('30'))
self.table.setItem(4, 2, QTableWidgetItem('Male'))
self.filter_edit = QLineEdit()
self.filter_edit.textChanged.connect(self.filterTable)
layout = QVBoxLayout(self)
layout.addWidget(self.filter_edit)
layout.addWidget(self.table)
self.show()
def filterTable(self, text):
rows = self.table.rowCount()
cols = self.table.columnCount()
for r in range(rows):
item = self.table.item(r, 0)
if item.text().startswith(text):
self.table.setRowHidden(r, False)
else:
self.table.setRowHidden(r, True)
if __name__ == '__main__':
app = QApplication([])
ex = Example()
app.exec_()
```
这个例子创建了一个包含名字、年龄和性别的QTableWidget,并添加了一个QLineEdit筛选器。每当QLineEdit的内容更改时,filterTable()函数会被调用以更新QTableWidget的行的可见性。在这个例子中,只有当行的“Name”列以QLineEdit的文本开始时,该行才会显示。
阅读全文