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();
    }



  • @Subuday

    if (parent.isValid()) {
     return 0;
     }
    

    You sure that's not supposed to be if (!parent.isValid())?



  • @JonB Thanks!


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.