我试图通过使用QSortFilterProxyModel来过滤QLineEdit中基于文本的QTableView。它工作正常,但不正确 - 它没有显示完全匹配的项目"。一个例子将更好地说明我的意思。
实施例: 打字" 22"进入QLineEdit将显示具有" 22"在第一列中,但不是具有等于22的列的行。" 229"将显示," 2224"将会显示,但不会显示" 22"
以下是我的代码的精简版
self.model = QSqlTableModel()
self.model.setTable("products")
self.model.select()
self.proxy = QSortFilterProxyModel()
self.proxy.setSourceModel(self.model)
self.proxy.setFilterKeyColumn(0)
self.ui.table_products.setModel(self.proxy)
self.ui.line_input.textChanged.connect(self._filter_products)
def _filter_products(self, text):
search = QRegExp(
text,
Qt.CaseInsensitive,
QRegExp.RegExp
)
self.proxy.setFilterRegExp(search)
答案 0 :(得分:0)
在我看来,你正在过滤第0列......
self.proxy.setFilterKeyColumn(0)
...并且该列中只有1行,其中包含22行。