C++ QAbstractListModel中的QList排序/筛选

C++ QAbstractListModel中的QList排序/筛选,c++,qt,qml,qt5,qabstractlistmodel,C++,Qt,Qml,Qt5,Qabstractlistmodel,我想使用自定义对象(按其属性)对QList进行排序和筛选,这是QAbstractListModel派生类中的一个属性,但我无法理解分解。我想我应该使用QSortFilterProxyModel,因为它看起来完全符合我的需要,但我真的说不出来 我目前正在将模型投影到QML(GridView) 我应该创建由模型派生的新类(从QAbstractListModel派生的类),还是以其他方式创建?我不知道多值过滤(这些过滤器的串联)是如何工作的,以及如何在QSortFilterProxyModel中实现它

我想使用自定义对象(按其属性)对
QList
进行排序和筛选,这是
QAbstractListModel
派生类中的一个属性,但我无法理解分解。我想我应该使用
QSortFilterProxyModel
,因为它看起来完全符合我的需要,但我真的说不出来

我目前正在将模型投影到QML(
GridView

我应该创建由模型派生的新类(从
QAbstractListModel
派生的类),还是以其他方式创建?我不知道多值过滤(这些过滤器的串联)是如何工作的,以及如何在
QSortFilterProxyModel
中实现它。我可以看出,在过滤之后,我可以简单地按照QList中对象的属性对它们进行排序


在模型中过滤和排序的最佳(或至少是好的)解决方案是什么?

这里是一个简单的基于QML的应用程序,它显示了一个带有文本项的基本列表视图,用户可以在该视图上执行项过滤

为了进行排序,您可以在类FilterProxyModel中再添加一个Q_可调用函数:

void FilterProxyModel::setSortOrder(bool checked)
{
 if(checked)
 {
 this->sort(0, Qt::DescendingOrder);
 }
 else
 {
 this->sort(0, Qt::AscendingOrder);
 }
}

之后,在QML表单中添加一些控件以进行检查。

是的,使用
QSortFilterProxyModel
我在使用中通常从它派生。@drescherjm但是我应该创建新类还是在从QAbstractListModel派生的类中实现它?但是我应该创建新类还是在从QAbstractListModel派生的类中实现它?不,只需使用
setSourceModel(listModelPointer)
@drescherjm将您的
QAbstractListModel
传递给您的
QSortFilterProxyModel
对象好的,我会试试,谢谢您,我个人使用了这个库。正如我看到asker使用的QML:“我目前正在将我的模型投影到QML(GridView)。”