How to limit shown rows in list view?
-
I can't figure out how to limit shown items in list view using filter model?
filterModel->setSourceModel(&langListModel); filterModel->setFilterRole(langListModel.NameRole); ``
#include "langlistmodel.h"
LangListModel::LangListModel(QObject *parent):
QAbstractListModel(parent)
{}
int LangListModel::rowCount(const QModelIndex &parent) const
{
if (parent.isValid()) {
return 0;
}return listData.size();
}
QVariant LangListModel::data(const QModelIndex &index, int role) const
{
if (!index.isValid()) {
return QVariant();
}switch (role) { case IDRole: return listData.at(index.row()).value("id"); case NameRole: return listData.at(index.row()).value("name"); default: return QVariant(); }
}
QHash<int, QByteArray> LangListModel::roleNames() const
{
QHash<int, QByteArray> roles = QAbstractListModel::roleNames();
roles[NameRole] = "name";
roles[IDRole] = "IDLang";return roles;
}
void LangListModel::add(const QMap<QString, QString> &unit)
{
beginInsertRows(QModelIndex(), listData.size(), listData.size());
listData.append(unit);
endInsertRows();
}int LangListModel::size() const
{
return listData.size();
}void LangListModel::clear()
{
beginRemoveRows(QModelIndex(), 0, listData.size());
endRemoveRows();
listData.clear();
}