3

看来我不能一次过滤超过一列。我认为这是使用过滤器时的常见用法,也许我遗漏了一些东西。

例如,我的 4 列,QTableView比方说 column X (string), Y (int), Z (string), Q (string)。我希望按filter_1X过滤并按filter_2列过滤Z。是否可以为多于一列(动态)设置QSortFilterProxyModel过滤器,但不是全部(重新实施filterAcceptsRow)。

谢谢

4

1 回答 1

7

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

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

如果这些方法还不够,根据 Qt 文档,定制代理模型被设计为通过继承使用。

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

在这种情况下,您需要继承和覆盖 filterAcceptsRow() 方法。

于 2011-07-05T08:44:59.407 回答