Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. QML and Qt Quick
  4. Create sub a ListModel

Create sub a ListModel

Scheduled Pinned Locked Moved QML and Qt Quick
12 Posts 3 Posters 7.1k 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.
  • M Offline
    M Offline
    Merinas
    wrote on last edited by
    #3

    Thanks for answering. I need that : @
    ListModel{
    id:lmodel
    //[...]
    }

    SubListModel{
    id:lmodel1
    source:lmodel
    range.start:0
    range.lenght:10
    }

    ListView{
    model:lmodel1
    //[...]
    }@

    Is it possible with your suggestion ?

    1 Reply Last reply
    0
    • A Offline
      A Offline
      andre
      wrote on last edited by
      #4

      Not with just QML, no. My suggestion would take C++ to realize.

      1 Reply Last reply
      0
      • M Offline
        M Offline
        Merinas
        wrote on last edited by
        #5

        Ok, I get that, so subclass a QSortFilterProxyModel would solve my problem ?

        1 Reply Last reply
        0
        • A Offline
          A Offline
          andre
          wrote on last edited by
          #6

          It could, if your data doesn't come from within QML. If you can get your data from the C++ side, you can use this approach. The problem is that you can not use a QSortFilterProxyModel on a model that comes from QML, but only on a QAbstractItemModel-derived model.

          1 Reply Last reply
          0
          • M Offline
            M Offline
            Merinas
            wrote on last edited by
            #7

            Arf... My data came from a QML ListModel since I work only with QML and some few C++plugins.

            1 Reply Last reply
            0
            • M Offline
              M Offline
              mario
              wrote on last edited by
              #8

              Well, maybe you can do it by adding a javascript-function that will loop through your ListModel (lmodel) and add the desired item to other ListModel (lmodel1).

              1 Reply Last reply
              0
              • M Offline
                M Offline
                Merinas
                wrote on last edited by
                #9

                That's what I think of, but I'm not quite sure I can do that : @list.append(list2.get(i))@

                1 Reply Last reply
                0
                • M Offline
                  M Offline
                  mario
                  wrote on last edited by
                  #10

                  Is this what you're looking for?

                  @
                  import QtQuick 1.0

                  Rectangle {
                  id: main

                  width: 400
                  height: 600
                  
                  ListModel {
                      id: myModel
                  
                      ListElement {
                          name: "element 0"
                      }
                      ListElement {
                          name: "element 1"
                      }
                      ListElement {
                          name: "element 2"
                      }
                      ListElement {
                          name: "element 3"
                      }
                  }
                  
                  ListModel {
                      id: subList
                  }
                  
                  
                  ListView {
                      id: listView
                  
                      anchors.fill: parent
                  
                      spacing: 8
                  
                      model: subList
                      delegate: Text { text: name; width: listView.width }
                  }
                  
                  Text {
                      text: "Update list"
                      anchors.right: parent.right; anchors.bottom: parent.bottom; anchors.margins: 5
                      MouseArea {
                          anchors.fill: parent
                          onClicked: updateSubList(1, 2)
                      }
                  }
                  
                  function updateSubList(begin, end) {
                      subList.clear()
                      end = Math.min(end, myModel.count-1)
                      for (var i = begin; i <= end ; i++) {
                          subList.append(myModel.get(i))
                      }
                  }
                  

                  }
                  @

                  1 Reply Last reply
                  0
                  • M Offline
                    M Offline
                    Merinas
                    wrote on last edited by
                    #11

                    Yeah that should do the tricks, thanks a lot.....
                    And what happen if the source model change ? Is there a signal emit somewhere, or did i need to build one ?

                    1 Reply Last reply
                    0
                    • M Offline
                      M Offline
                      mario
                      wrote on last edited by
                      #12

                      I actually tried connecting to a 'onCountChanged' signal on the ListModel but w/o success. Don't know if that is a bug or feature :)

                      1 Reply Last reply
                      0

                      • Login

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