Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 如何使用基于组合框选择的QSortFilterProxyModel对TreeView项进行排序_Qt_Treeview_Qml_Qtquick2_Qsortfilterproxymodel - Fatal编程技术网

Qt 如何使用基于组合框选择的QSortFilterProxyModel对TreeView项进行排序

Qt 如何使用基于组合框选择的QSortFilterProxyModel对TreeView项进行排序,qt,treeview,qml,qtquick2,qsortfilterproxymodel,Qt,Treeview,Qml,Qtquick2,Qsortfilterproxymodel,我的应用程序中有一个树状视图。我使用从QSortFilterProxyModel继承的类来限制显示的行。我还需要根据组合框的selectedIndex对TreeView中的项目进行排序。 到目前为止,我所做的是: 当组合框的选定索引更改时,我将调用从QSortFilterProxyModel继承的类中的一个函数,该类调用sort(0)function 在从QSortFilterProxyModel继承的类中,我重写了lessThan函数,并基于组合框中的当前选择实现了我的逻辑 问题是,排序并不总

我的应用程序中有一个树状视图。我使用从QSortFilterProxyModel继承的类来限制显示的行。我还需要根据组合框的selectedIndex对TreeView中的项目进行排序。 到目前为止,我所做的是:

  • 当组合框的选定索引更改时,我将调用从QSortFilterProxyModel继承的类中的一个函数,该类调用
    sort(0)
    function
  • 在从QSortFilterProxyModel继承的类中,我重写了
    lessThan
    函数,并基于组合框中的当前选择实现了我的逻辑

  • 问题是,排序并不总是发生。当我运行应用程序,并在组合框中选择一个项目时,树项目将正确排序。但是如果我在组合框中选择另一项,树将不会得到更新。不过,lessThan函数将被调用

    如果您的代理设置为动态排序/筛选(很可能是这样),则再次使用相同的列和排序方向调用sort()将不会起任何作用。 看


    您还/或者必须调用
    QSortFilterProxyModel::invalidate()
    来触发重新调用。

    您需要提供您正在使用的代码,您提供的信息不足以解决问题。@Mike我相信我提供的信息对于知道答案的人来说已经足够了。正如你所看到的,凯文理解了这个问题并回答了它。谢谢,在我的情况下,这两个动作都需要排序才能正常工作。当创建QSortFilterProxyModel类的实例并在调用sort(0)之前调用invalidate()时,setDynamicSortFilter(false)