假设我有一个源模型,其中行移动用
进行修饰beginMoveRows()
endMoveRows()
(因此发出layoutChanged()
)。
然后,设置QSortFilterProxyModel实例来过滤源模型的行。
当我从源头获取它时,源模型布局的变化会导致代理模型的相应重新调整(因为它会监听layoutChanged()
信号并正确调整自身)。
但是文档只说:
注意:默认情况下,只要原始模型发生更改,模型就不会动态地重新排序和重新过滤数据。可以通过设置dynamicSortFilter属性来更改此行为。
dynamicSortFilter:bool 此属性用于确定在源模型的内容发生更改时是否动态排序和过滤代理模型。
我的问题:
感谢。
答案 0 :(得分:2)
您在评论中提到的问题似乎只在您使用数字或列的排序时才会显示,因此我认为您的模型不受影响。
没有提供关于要发生什么的详细规范,因此唯一的选择是查找源并希望它在将来的版本中不会发生变化。看了一下这些消息来源后,我认为你的问题的答案是:
layoutChanged()
和layoutAboutToBeChanged()
信号,更新它的索引并发出自己的layoutChanged()
和layoutAboutToBeChanged()
,因此它会对行移动作出反应。 layoutChanged()
已经在更新持久性索引,因此再次更新它只会搞乱事情。