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

时间:2011-07-05 08:00:52

标签: qt filtering qtableview

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

例如,我的QTableView中有4列,比如列X (string), Y (int), Z (string), Q (string)。我希望按filter_1X进行过滤,然后按filter_2Z进行过滤。是否可以为多于一列(动态)设置QSortFilterProxyModel过滤器,但不是全部(重新实现filterAcceptsRow)。

由于

1 个答案:

答案 0 :(得分:6)

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

proxyModel->setFilterRegExp(QRegExp(".png", Qt::CaseInsensitive,
                                             QRegExp::FixedString));
proxyModel->setFilterKeyColumn(1); 

如果这些方法不够,根据Qt文档,customizing proxy models旨在通过继承使用。

  

对于高级用户,   QSortFilterProxyModel可以   子类化,提供了一种机制   启用自定义过滤器   实现。

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