Suggestions Please : Better way to handle large set of data in QML List view/C++ List model

  • Hello All,

    In my project, I need to display list of some data using QML List view.And, the QT version I am using is QT 5.0.2. Since, scroll bar view is not available in this version of Qt, I managed to implement it by following this example.

    Now, the data source is an other component which has provided C++ APIs to request for range of data. And the number of elements in the data set can be huge (in terms of tens of thousands).

    I have followed below steps to achieve my requirements :

    1. I have a created a C++ class that inherits from QAbstractListModel and I have overridden rowCount, data, canfetchmore and fetch more functions.
    2. And in the QML, I have referred the instance C++ as model.
    3. Whenever fetchmore() function is called, I am requesting next set of data using C++ APIs that are provided by another component and appending the same to my list model.

    So far, it is good. But I need few clarifications -

    1. If I keep appending the data to my list model,then I will end up storing thousands of elements in the list (I don't want to do that). I want to limit the number of elements in the list and use it as a ring buffer. Is this possible?
    2. QModelIndex parameter in fetchmore is received as invalid Index. Why?
    3. Assume a case : alphabets are mentioned on scrollbar, and when user selects Y on scrollbar, I should fetch elements that starts with Y. Here, I can fetch the data from my external component and reset the list model with new data. But, if I do that,then my list will start with Y-elements and I will not be able to scroll up to get previous elements. -- Is there any other way to achieve this?
    4. Also, my other component takes considerable time if I ask huge set of data (for example in cases as mentioned in point 3) - Any suggestions to make a better design to handle this case?
    5. Is there any way, other than fetchmore(), to update the model dynamically.

    I have spent good amount of time on google to get answers to my questions and I have successfully FAILED. :(

    Any help appreciated. Thanks in advance.

  • Hi All,

    I have managed to handle it in better way. Please check this post for an answer.

Log in to reply

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