看来我不能一次过滤超过一列。我认为这是使用过滤器时的常见用法,也许我遗漏了一些东西。
例如,我的 4 列,QTableView
比方说 column X (string), Y (int), Z (string), Q (string)
。我希望按filter_1
列X
过滤并按filter_2
列过滤Z
。是否可以为多于一列(动态)设置QSortFilterProxyModel
过滤器,但不是全部(重新实施filterAcceptsRow
)。
谢谢
看来我不能一次过滤超过一列。我认为这是使用过滤器时的常见用法,也许我遗漏了一些东西。
例如,我的 4 列,QTableView
比方说 column X (string), Y (int), Z (string), Q (string)
。我希望按filter_1
列X
过滤并按filter_2
列过滤Z
。是否可以为多于一列(动态)设置QSortFilterProxyModel
过滤器,但不是全部(重新实施filterAcceptsRow
)。
谢谢
您可以使用 setFilterRegExp()、setFilterWildcard() 或 setFilterFixedString() 方法来设置过滤器。QT 文档的一个例子是:
proxyModel->setFilterRegExp(QRegExp(".png", Qt::CaseInsensitive,
QRegExp::FixedString));
proxyModel->setFilterKeyColumn(1);
如果这些方法还不够,根据 Qt 文档,定制代理模型被设计为通过继承使用。
对于高级用户,可以对 QSortFilterProxyModel 进行子类化,提供一种能够实现自定义过滤器的机制。
在这种情况下,您需要继承和覆盖 filterAcceptsRow() 方法。