使用QSortFilterProxyModel进行QTableView过滤(分组过滤器)

kri*_*ajb 3 qt filtering qtableview

我似乎无法一次过滤多个列.我认为这是使用过滤器的常见用法,也许我错过了一些东西.

例如,我在我的4列QTableView,让我们说列X (string), Y (int), Z (string), Q (string).我希望通过筛选filter_1X和过滤的filter_2Z.是否可以QSortFilterProxyModel为多个列(动态)设置过滤器,但不是全部(重新实现filterAcceptsRow).

谢谢

O.C*_*.C. 6

您可以使用setFilterRegExp(),setFilterWildcard()或setFilterFixedString()方法来设置过滤器.QT doc的一个例子是:

proxyModel->setFilterRegExp(QRegExp(".png", Qt::CaseInsensitive,
                                             QRegExp::FixedString));
proxyModel->setFilterKeyColumn(1); 
Run Code Online (Sandbox Code Playgroud)

如果这些方法不够,根据Qt文档,定制代理模型旨在通过继承来使用.

对于高级用户,可以对QSortFilterProxyModel进行子类化,从而提供一种可以实现自定义过滤器的机制.

在这种情况下,您需要子类并覆盖filterAcceptsRow()方法.