qt中的过滤模型QSortFilterProxyModel,当数据源QAbstractTableModel新增数据时,原来设置的FilterRegExp 不起作用需要重新调用setFilterRegExp。
最后的显示结果有一个刷新的过程,中间有一瞬间不应该显示的数据也会显示出来,这个有谁遇到吗?
这是因为QSortFilterProxyModel在接收到新数据时会先清除缓存,然后再重新进行过滤。在这个过程中,有一瞬间可能会出现不应该显示的数据被显示出来的情况。可以使用QSortFilterProxyModel的invalidate()方法来刷新模型,这样可以尽量避免数据闪烁的问题。具体使用可以在QAbstractTableModel新增数据之后,调用QSortFilterProxyModel的invalidate()方法和setFilterRegExp方法。