使用QSortFilterProxyModel进行QTableView筛选(分组筛选器)
似乎我不能一次过滤多个列。我想这是使用过滤器的常见用法,也许我遗漏了什么 例如,我的使用QSortFilterProxyModel进行QTableView筛选(分组筛选器),qt,filtering,qtableview,Qt,Filtering,Qtableview,似乎我不能一次过滤多个列。我想这是使用过滤器的常见用法,也许我遗漏了什么 例如,我的QTableView中有4列,比如说列X(string)、Y(int)、Z(string)、Q(string)。我希望通过filter_1列X进行过滤,并通过filter_2列Z进行过滤。是否可以为多个列(动态)设置QSortFilterProxyModel过滤器,但不能为所有列设置过滤器(重新实现filterAcceptsRow) 谢谢您可以使用setFilterRegExp()、setFilterWildca
QTableView
中有4列,比如说列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文档设计是通过继承来使用的
对于高级用户,
QSortFilterProxy模型可以是
子类,提供一种机制
使自定义筛选器能够
执行
在这种情况下,您需要对filterAcceptsRow()方法进行子类化和重写。我尝试使用子类和重写filterAcceptsRow()方法,但使用该方法,筛选器将对其中选定的所有列起作用。我需要动态的方法,所以我将能够有时过滤X列,有时过滤X列,有时过滤X列,有时过滤X列,有时过滤Y列,有时过滤X列,有时过滤X列,有时过滤Y列,有时过滤Z列,有时过滤Q列。我将对它进行更多的处理,并让你们知道它是如何运行的。看看这个例子。做一些类似的事情,或者你也可以使用filterAcceptsColumn方法花了一些时间在我的案例中实现它,works!谢谢!