#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