Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. How show only part of elemensts of list view?
Forum Updated to NodeBB v4.3 + New Features

How show only part of elemensts of list view?

Scheduled Pinned Locked Moved Unsolved General and Desktop
2 Posts 2 Posters 232 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S Offline
    S Offline
    Subuday
    wrote on last edited by
    #1

    I have list model and I need to show first 10 elements. Also I use qml.

    #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();
    }
    
      ListView {
         id: mentorsList
         model: filterModel
         footer: footerAndHeader
         anchors.fill: parent
         spacing: 2
         cacheBuffer: 2
         clip: true
    

    ......// Some Code
    }

    1 Reply Last reply
    0
    • SGaistS Offline
      SGaistS Offline
      SGaist
      Lifetime Qt Champion
      wrote on last edited by
      #2

      Hi,

      Use a proxy model and implement the filterAcceptsRow to accept only the 10 first object.

      Interested in AI ? www.idiap.ch
      Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

      1 Reply Last reply
      2

      • Login

      • Login or register to search.
      • First post
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • Users
      • Groups
      • Search
      • Get Qt Extensions
      • Unsolved