【发布时间】:2017-01-22 04:03:23
【问题描述】:
我们在QTableView 上安装了一个QSortFilterProxyModel 和两个(或更多)QLineEdit 用于过滤视图(基于这些QLineEdits 的文本)
在我们看来,我们有一个槽,它告诉我们行编辑的字符串和我们想要的当前列。像这样:
void onTextChange(int index, QString ntext) {
filter.setFilterKeyColumn(index);
filter.setFilterRegExp(QRegExp(ntext, Qt::CaseInsensitive));
}
在第一列我们有名字在第二我们有生日年份。
现在我们为第 2 列输入年份(例如 1985)。到目前为止,过滤还可以,但是当我们切换到第一行编辑并输入名称(例如 john)时,之前基于年份的过滤将重置。
我们如何为自定义 QSortFilterProxyModel 更改此行为?
(实际上当我们更改过滤器键列时,过滤器模型必须过滤现有视图而不是重置它)
更新...
基于@Mike 的回答:
如果您使用 QMap<int, QRegExp> 与未知列数进行交互会帮助您
【问题讨论】:
-
您可以将 2 层代理模型相互叠加。一个为名字,另一个为年份。并根据您更改的行编辑更改相应的过滤器。
标签: qt qt5 qtableview qsortfilterproxymodel