我似乎无法一次过滤多个列。我认为这在使用过滤器时很常见,也许我错过了一些东西。
例如,我的QTableView
中有4列,比如列X (string), Y (int), Z (string), Q (string)
。我希望按filter_1
列X
进行过滤,然后按filter_2
列Z
进行过滤。是否可以为多于一列(动态)设置QSortFilterProxyModel
过滤器,但不是全部(重新实现filterAcceptsRow
)。
由于
答案 0 :(得分:6)
您可以使用setFilterRegExp(),setFilterWildcard()或setFilterFixedString()方法来设置过滤器。 QT doc的一个例子是:
proxyModel->setFilterRegExp(QRegExp(".png", Qt::CaseInsensitive,
QRegExp::FixedString));
proxyModel->setFilterKeyColumn(1);
如果这些方法不够,根据Qt文档,customizing proxy models旨在通过继承使用。
对于高级用户, QSortFilterProxyModel可以 子类化,提供了一种机制 启用自定义过滤器 实现。
在这种情况下,您需要子类并覆盖filterAcceptsRow()方法。