QSortFilterProxyModel和动态排序

时间:2016-07-20 09:58:10

标签: c++ qt model-view-controller

我正在使用一个继承QSortFilterProxyModel的类来只对表视图中的行进行排序。

我已启用dynamicSort以确保即使我加载模型或添加行,我的视图也会保持排序(我已检查modelReset()rowsInserted()是否正确发出通过我的模型)。

但由于某种原因,我的行没有保持排序。

是否有特定要做的事情来启用动态排序?

根本不是setDynamicSortFilter所做的事情?

有没有办法在发出这些信号时手动调用排序? (每次我尝试这样做时,我只得到模型data()中的无效变体,根据来源判断,信号是在QSortFilterProxyModel再次完成设置之前发出的。

无论如何,欢迎任何帮助尝试弄清楚它应该如何工作,谢谢。

1 个答案:

答案 0 :(得分:1)

来自dynamicSortFilter文档:

  

请注意,当dynamicSortFilter为true时,不应通过代理模型更新源模型。例如,如果在QComboBox上设置代理模型,则使用更新模型的函数(例如addItem())将无法按预期工作替代方法是将dynamicSortFilter设置为false,并在将项添加到QComboBox后调用sort()

有没有办法在发出这些信号时手动调用排序? (每次我尝试这样做时,我只得到模型数据中的无效变量(),从源头判断,信号在QSortFilterProxyModel再次完成设置之前发出)

我认为如果您将dynamicSortFilter设置为false,那么您对sort的手动调用将不会(严重)拦截QSortFilterProxyModel的内部更新。至少我可以告诉你,这就是我在类似场景中所做的事情,它对我很有用。