Сортировка / фильтрация QList в QAbstractListModel
Я хочу отсортировать и отфильтровать QList
с пользовательскими объектами (по его атрибутам), который является атрибутом в QAbstractListModel
производный класс, но я не могу понять, разложение. Я думаю, что я должен использовать QSortFilterProxyModel
потому что, похоже, он делает именно то, что мне нужно, но я действительно не могу сказать.
В настоящее время я проецирую свою модель на QML (GridView
).
Должен ли я сделать новый класс, производный от моей модели (класс, полученный из QAbstractListModel
) или мне по другому? Я не могу понять, как работает фильтрация по нескольким значениям (объединение этих фильтров) и как я могу реализовать это в QSortFilterProxyModel
, Я могу понять, что после фильтрации я могу просто отсортировать их по атрибутам объектов в QList.
Какое лучшее (или хотя бы хорошее) решение для фильтрации и сортировки в модели?
1 ответ
Вот простое приложение на основе QML, которое показывает базовое представление списка с текстовым элементом, в котором пользователь может выполнять фильтрацию элементов.
https://github.com/freakMeduza/Qt-QML-search-panel
Для сортировки вы можете добавить еще одну функцию Q_INVOKABLE в класс FilterProxyModel:
void FilterProxyModel::setSortOrder(bool checked)
{
if(checked)
{
this->sort(0, Qt::DescendingOrder);
}
else
{
this->sort(0, Qt::AscendingOrder);
}
}
После этого добавьте некоторые элементы управления в форму QML для проверки.