|  | Home · Overviews · Examples |

# QAbstractListModel Class Reference
[com.trolltech.qt.core module]

The `QAbstractListModel` class provides an abstract model that can be subclassed to create one-dimensional list models. More...

Inherits `QAbstractItemModel`.

Inherited by `QStringListModel`.

## Detailed Description

The `QAbstractListModel` class provides an abstract model that can be subclassed to create one-dimensional list models.

`QAbstractListModel` provides 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 `QAbstractItemModel` if 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 `QAbstractTableModel` class instead.

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 `QListView` widget. 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.

### Subclassing

Note: Some general guidelines for subclassing models are available in the Model Subclassing Reference.

When subclassing `QAbstractListModel`, you must provide implementations of the `rowCount` and `data` functions. Well behaved models also provide a `headerData` implementation.

For editable list models, you must also provide an implementation of `setData`, implement the `flags` function so that it returns a value containing Qt::ItemIsEditable.

Note that `QAbstractListModel` provides 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 `insertRows` and `removeRows`. When implementing these functions, it is important to call the appropriate functions so that all connected views are aware of any changes:

- An `insertRows` implementation must call `beginInsertRows` before inserting new rows into the data structure, and it must call `endInsertRows` immediately afterwards.
- A `removeRows` implementation must call `beginRemoveRows` before the rows are removed from the data structure, and it must call `endRemoveRows` immediately afterwards.

See also Model Classes, Model Subclassing Reference, `QAbstractItemView`, `QAbstractTableModel`, and Item Views Puzzle Example.