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)。”