首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何为QTableWidget创建过滤器?

如何为QTableWidget创建过滤器?
EN

Stack Overflow用户
提问于 2015-12-13 14:56:44
回答 1查看 13.4K关注 0票数 10

我试图用QTableWidget中的QLineEdit为PySide创建一个过滤器。我已经看过一些使用QSortFilterProxyModel进行C++的教程,但是无法理解如何在C++中实现它。

我需要在“值”栏中搜索。

EN

回答 1

Stack Overflow用户

发布于 2015-12-15 10:33:09

QSortFilterProxyModel是一个代理模型,这意味着将它放在完整的数据模型和视图之间。泰图詹的注释很好,您可以查看本地PySide/PyQt安装中的basicsortfiltermodel.py,以获得一个basicsortfiltermodel.py示例。

另外,不用使用QTableWidgetQTableView就足够了--反正您也不需要内置的QTableWidget模型。

QTableWidget:详细信息

QTableWidget类提供具有默认模型的基于项的表视图。 表小部件为应用程序提供标准的表显示功能。QTableWidget中的项由QTableWidgetItem提供。 如果您想要一个使用您自己的数据模型的表,您应该使用QTableView而不是这个类。

我编译了一个非常简单的示例,演示了QTableView的第三列的过滤

代码语言:javascript
运行
复制
from PySide import QtCore, QtGui

app = QtGui.QApplication([])
window = QtGui.QWidget()

# standard item model
model = QtGui.QStandardItemModel(5, 3)
model.setHorizontalHeaderLabels(['ID', 'DATE', 'VALUE'])
for row, text in enumerate(['Cell', 'Fish', 'Apple', 'Ananas', 'Mango']):
    item = QtGui.QStandardItem(text)
    model.setItem(row, 2, item)

# filter proxy model
filter_proxy_model = QtGui.QSortFilterProxyModel()
filter_proxy_model.setSourceModel(model)
filter_proxy_model.setFilterKeyColumn(2) # third column

# line edit for filtering
layout = QtGui.QVBoxLayout(window)
line_edit = QtGui.QLineEdit()
line_edit.textChanged.connect(filter_proxy_model.setFilterRegExp)
layout.addWidget(line_edit)

# table view
table = QtGui.QTableView()
table.setModel(filter_proxy_model)
layout.addWidget(table)

window.show()
app.exec_()

您有一个QStandardItemModel,它被设置为QSortFilterProxyModel的源,它使用第三列进行过滤,并使用QLineEdit的输入作为筛选表达式。QSortFilterProxyModelQTableView用作模型。

看起来是:

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34252413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档