QAbstractListModelprovides a standard interface for models that represent their data as a simple non-hierarchical sequence of items. It is not used directly, but must be subclassed.
Since the model provides a more specialized interface than
QAbstractItemModel, it is not suitable for use with tree views; you will need to subclass
QAbstractItemModelif you want to provide a model for that purpose. If you need to use a number of list models to manage data, it may be more appropriate to subclass
Simple models can be created by subclassing this class and implementing the minimum number of required functions. For example, we could implement a simple read-only
QStringList-based model that provides a list of strings to a
QListViewwidget. In such a case, we only need to implement the
rowCount()function to return the number of items in the list, and the
data()function to retrieve items from the list.
Since the model represents a one-dimensional structure, the
rowCount()function returns the total number of items in the model. The
columnCount()function is implemented for interoperability with all kinds of views, but by default informs views that the model contains only one column.
If your model is used within QML and requires roles other than the default ones provided by the
roleNames()function, you must override it.
For editable list models, you must also provide an implementation of
setData(), and implement the
flags()function so that it returns a value containing
QAbstractListModelprovides a default implementation of
columnCount()that informs views that there is only a single column of items in this model.
Models that provide interfaces to resizable list-like data structures can provide implementations of
removeRows(). When implementing these functions, it is important to call the appropriate functions so that all connected views are aware of any changes:
Some general guidelines for subclassing models are available in the Model Subclassing Reference .
© 2020 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.