QTableWidget 筛选显示


void filterTableWidgetRows(QTableWidget*table, const QString& text)
{
	if(NULL == table) return;
	QList<QTableWidgetItem*> findItems = table->findItems(text,Qt::MatchContains);

	int nRow = table->rowCount();
	bool bRowHidden = true;
	for(int i=0;i<nRow; i++)
	{
		 bRowHidden = true;
		 foreach(QTableWidgetItem* item,findItems)
		 {
		 	if(NULL == item) continue;
		 	if(table->row(item) == i)
		 	{
		 		bRowHidden = false;
		 		break;
		 	}
		 }
		 table->setRowHidden(i,bRowHidden);
	}

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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的文本开始时,该行才会显示

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值