我想使用自定义对象(通过其属性)对QList
进行排序和过滤,该对象是QAbstractListModel
派生类中的一个属性,但是我无法弄清楚分解。我认为我应该使用QSortFilterProxyModel
,因为它看起来确实可以满足我的需求,但是我实在无法分辨。
我目前正在将模型投影到QML(GridView
)。
我应该创建由我的模型派生的新类(从QAbstractListModel
派生的类),还是应该以其他方式创建它?我无法弄清楚如何通过多个值(这些过滤器的串联)进行过滤以及如何在QSortFilterProxyModel
中实现它。我可以发现,过滤之后,我可以简单地按QList中对象的属性对它们进行排序。
在模型中进行过滤和排序的最佳(至少是好的)解决方案是什么?
答案 0 :(得分:0)
这是一个基于QML的简单应用程序,它显示带有文本项的基本列表视图,用户可以在该视图上执行项过滤。
https://github.com/freakMeduza/Qt-QML-search-panel
要进行排序,您可以在类FilterProxyModel中再添加一个Q_INVOKABLE函数:
void FilterProxyModel::setSortOrder(bool checked)
{
if(checked)
{
this->sort(0, Qt::DescendingOrder);
}
else
{
this->sort(0, Qt::AscendingOrder);
}
}
然后在QML表单中添加一些控件以进行检查。