使用后端列表对QAbstractListModel排序 我有一个QuastListMeod派生C++类。 class MyList : public QAbstractListModel { Q_OBJECT public: MyList(); enum { SelectedRole, DisplayNameRole, AddressRole }; QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override; bool setData(const QModelIndex& index, const QVariant& value, int role = Qt::EditRole) override; private: BackEnd backend; };
然后我有一个BackEnd.cpp,它向MyList类对象添加和删除项使用后端列表对QAbstractListModel排序 我有一个QuastListMeod派生C++类。 class MyList : public QAbstractListModel { Q_OBJECT public: MyList(); enum { SelectedRole, DisplayNameRole, AddressRole }; QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override; bool setData(const QModelIndex& index, const QVariant& value, int role = Qt::EditRole) override; private: BackEnd backend; };,c++,qt,qml,qsortfilterproxymodel,qabstractlistmodel,C++,Qt,Qml,Qsortfilterproxymodel,Qabstractlistmodel,然后我有一个BackEnd.cpp,它向MyList类对象添加和删除项 class BackEnd : public QObject { // adds item of type MyList to mItems bool setItemAt(int index, const Item& item); private: // this has items of type MyList. (i.e QAbstractListModel
class BackEnd : public QObject {
// adds item of type MyList to mItems
bool setItemAt(int index, const Item& item);
private:
// this has items of type MyList. (i.e QAbstractListModel)
QVector<Item> mItems;
}
现在,我想对我的列表进行排序,我的列表已经过QSortFilterProxyModel,但无法确定如何将QSortFilterProxyModel与我当前的体系结构相匹配,因为我已注册为qml类型。如果需要从qml进行排序,我建议。是的,我们需要将其添加到Qt中:
qmlRegisterType<MyList >("MyList", 1, 0, "MyListModel");
engine->rootContext()->setContextProperty("backend", backend);
ListView {
model: MyListModel {
backend: backend
}
}