- class QAbstractListModel#
The
QAbstractListModel
class provides an abstract model that can be subclassed to create one-dimensional list models. More…Inherited by:
QWebEngineHistoryModel
,QPdfSearchModel
,QPdfLinkModel
,QStringListModel
,QHelpIndexModel
Synopsis#
Methods#
def
__init__()
Note
This documentation may contain snippets that were automatically translated from C++ to Python. We always welcome contributions to the snippet translation. If you see an issue with the translation, you can also let us know by creating a ticket on https:/bugreports.qt.io/projects/PYSIDE
Detailed Description#
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 subclassQAbstractItemModel
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 subclassQAbstractTableModel
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 therowCount()
function to return the number of items in the list, and thedata()
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. ThecolumnCount()
function is implemented for interoperability with all kinds of views, but by default informs views that the model contains only one column.Subclassing#
When subclassing
QAbstractListModel
, you must provide implementations of therowCount()
anddata()
functions. Well behaved models also provide aheaderData()
implementation.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 theflags()
function so that it returns a value containingItemIsEditable
.Note that
QAbstractListModel
provides a default implementation ofcolumnCount()
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()
andremoveRows()
. 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 callbeginInsertRows()
before inserting new rows into the data structure, and it must callendInsertRows()
immediately afterwards.A
removeRows()
implementation must callbeginRemoveRows()
before the rows are removed from the data structure, and it must callendRemoveRows()
immediately afterwards.
Note
Some general guidelines for subclassing models are available in the Model Subclassing Reference.
See also
Constructs an abstract list model with the given
parent
.