QSortFilterProxyModel未正确过滤

时间:2017-04-29 21:08:07

标签: python pyqt pyqt5

我试图通过使用QSortFilterProxyModel来过滤QLineEdit中基于文本的QTableView。它工作正常,但不正确 - 它没有显示完全匹配的项目"。一个例子将更好地说明我的意思。

实施例: 打字" 22"进入QLineEdit将显示具有" 22"在第一列中,但不是具有等于22的列的行。" 229"将显示," 2224"将会显示,但不会显示" 22"

inputting 2

inputting 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)

1 个答案:

答案 0 :(得分:0)

在我看来,你正在过滤第0列......

self.proxy.setFilterKeyColumn(0)

...并且该列中只有1行,其中包含22行。