Qt 如何使用基于组合框选择的QSortFilterProxyModel对TreeView项进行排序
我的应用程序中有一个树状视图。我使用从QSortFilterProxyModel继承的类来限制显示的行。我还需要根据组合框的selectedIndex对TreeView中的项目进行排序。 到目前为止,我所做的是:Qt 如何使用基于组合框选择的QSortFilterProxyModel对TreeView项进行排序,qt,treeview,qml,qtquick2,qsortfilterproxymodel,Qt,Treeview,Qml,Qtquick2,Qsortfilterproxymodel,我的应用程序中有一个树状视图。我使用从QSortFilterProxyModel继承的类来限制显示的行。我还需要根据组合框的selectedIndex对TreeView中的项目进行排序。 到目前为止,我所做的是: 当组合框的选定索引更改时,我将调用从QSortFilterProxyModel继承的类中的一个函数,该类调用sort(0)function 在从QSortFilterProxyModel继承的类中,我重写了lessThan函数,并基于组合框中的当前选择实现了我的逻辑 问题是,排序并不总
sort(0)
functionlessThan
函数,并基于组合框中的当前选择实现了我的逻辑问题是,排序并不总是发生。当我运行应用程序,并在组合框中选择一个项目时,树项目将正确排序。但是如果我在组合框中选择另一项,树将不会得到更新。不过,lessThan函数将被调用 如果您的代理设置为动态排序/筛选(很可能是这样),则再次使用相同的列和排序方向调用sort()将不会起任何作用。 看
您还/或者必须调用
QSortFilterProxyModel::invalidate()
来触发重新调用。您需要提供您正在使用的代码,您提供的信息不足以解决问题。@Mike我相信我提供的信息对于知道答案的人来说已经足够了。正如你所看到的,凯文理解了这个问题并回答了它。谢谢,在我的情况下,这两个动作都需要排序才能正常工作。当创建QSortFilterProxyModel类的实例并在调用sort(0)之前调用invalidate()时,setDynamicSortFilter(false)