Сортировка QAbstractListModel с помощью внутреннего списка

#c #qt #qml #qsortfilterproxymodel #qabstractlistmodel

#c #qt #qml #qsortfilterproxymodel #qabstractlistmodel

Вопрос:

У меня есть класс C , производный от QAbstractListModel.

 class MyList : public QAbstractListModel
{
    Q_OBJECT
public:
    MyList();
 enum {
        SelectedRole,
        DisplayNameRole,
        AddressRole
};

     QVariant data(const QModelIndexamp; index, int role = Qt::DisplayRole) const override;

    bool setData(const QModelIndexamp; index, const QVariantamp; value,
        int role = Qt::EditRole) override;

    private:
    BackEnd backend;
};
  

Тогда у меня есть BackEnd.cpp который добавляет и удаляет элементы в объект класса myList

 class BackEnd : public QObject {
        // adds item of type MyList to mItems
       bool setItemAt(int index, const Itemamp; item);
    
    private:
    // this has items of type MyList. (i.e QAbstractListModel)
        QVector<Item> mItems;
    }
  

В Main.cpp Я регистрирую тип myList и устанавливаю серверную часть в корневой контекст qml

  qmlRegisterType<MyList >("MyList", 1, 0, "MyListModel");
 engine->rootContext()->setContextProperty("backend", backend);
  

и в QML я использовал

 ListView {
   model: MyListModel {
        backend: backend
    }
}
  

Теперь я хочу отсортировать свой список, свой список и прошел через QSortFilterProxyModel, но не могу понять, как подогнать QSortFilterProxyModel к моей текущей архитектуре, поскольку моя модель, которую я зарегистрировал как тип qml.

Комментарии:

1. Если вам нужна возможность сортировки из QML, я рекомендую SortFilterProxyModel .

2. Да, нам нужно просто добавить его в Qt уже: bugreports.qt.io/browse/QTBUG-71348