我有一个自定义的QSortFilterProxyModel,它可以对列表中指定的除列之外的所有列进行过滤,这些列可以通过函数设置。我重写了 filterAcceptsRow()函数以使用过滤器模式获取行。一切正常,可以按照我的要求正确过滤,但是自定义模型中的过滤比标准模型中的过滤花费更多的时间。
我只尝试了两种不同的方法来将模型数据与过滤器模式进行匹配(如下面的代码中所述),但是这两种方法都比使用标准模型慢。我还尝试像标准模型的原始方法一样,将从模型索引接收的数据类型更改为QString: https://dreamswork.github.io/qt4/classQSortFilterProxyModel.html#acb9addede0e557d21031132712bd0528
,但是存在将pythonic字符串/ unicode转换为QString数据类型的一般问题。 我在2.7版和PyQt4中使用Python-目前没有选择使用更高版本的Python / PyQt。
vertex.GetData(vertices);
在标准模型中,当我在过滤器字段中键入一些文本时,它会眨眼间进行过滤,但是当我切换到自定义模型时,当我键入内容时,甚至需要花一些时间才能在字段中显示我刚刚键入的内容。行数越大(从几行增加到几万行),它也会变得越来越慢。