Сортировка / фильтрация QList в QAbstractListModel - PullRequest
0 голосов
/ 05 июля 2018

Я хочу отсортировать и отфильтровать QList с пользовательскими объектами (по его атрибутам), что является атрибутом в QAbstractListModel производном классе, но я не могу понять, как выполнить декомпозицию. Я думаю, что я должен использовать QSortFilterProxyModel, потому что похоже, что он делает именно то, что мне нужно, но я действительно не могу сказать.

В настоящее время я проецирую свою модель на QML (GridView).

Должен ли я создать новый класс, производный от моей модели (класс, полученный из QAbstractListModel), или я должен сделать его другим способом? Я не могу понять, как работает фильтрация по нескольким значениям (объединение этих фильтров) и как я могу реализовать это в QSortFilterProxyModel. Я могу понять, что после фильтрации я могу просто отсортировать их по атрибутам объектов в QList.

Какое самое лучшее (или хотя бы хорошее) решение для фильтрации и сортировки в модели?

1 Ответ

0 голосов
/ 06 июля 2018

Вот простое приложение на основе 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 для проверки.

...