我正在使用一个继承QSortFilterProxyModel
的类来只对表视图中的行进行排序。
我已启用dynamicSort
以确保即使我加载模型或添加行,我的视图也会保持排序(我已检查modelReset()
或rowsInserted()
是否正确发出通过我的模型)。
但由于某种原因,我的行没有保持排序。
是否有特定要做的事情来启用动态排序?
根本不是setDynamicSortFilter
所做的事情?
有没有办法在发出这些信号时手动调用排序? (每次我尝试这样做时,我只得到模型data()
中的无效变体,根据来源判断,信号是在QSortFilterProxyModel
再次完成设置之前发出的。
无论如何,欢迎任何帮助尝试弄清楚它应该如何工作,谢谢。
答案 0 :(得分:1)
来自dynamicSortFilter
文档:
请注意,当dynamicSortFilter为true时,不应通过代理模型更新源模型。例如,如果在QComboBox上设置代理模型,则使用更新模型的函数(例如addItem())将无法按预期工作。 替代方法是将dynamicSortFilter设置为false,并在将项添加到QComboBox后调用sort()。
有没有办法在发出这些信号时手动调用排序? (每次我尝试这样做时,我只得到模型数据中的无效变量(),从源头判断,信号在QSortFilterProxyModel再次完成设置之前发出)
我认为如果您将dynamicSortFilter
设置为false
,那么您对sort
的手动调用将不会(严重)拦截QSortFilterProxyModel
的内部更新。至少我可以告诉你,这就是我在类似场景中所做的事情,它对我很有用。