QAbstractTableModel#

The QAbstractTableModel class provides an abstract model that can be subclassed to create table models. More

Inheritance diagram of PySide6.QtCore.QAbstractTableModel

Inherited by: QSqlQueryModel, QSqlTableModel, QSqlRelationalTableModel

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#

QAbstractTableModel provides a standard interface for models that represent their data as a two-dimensional array 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, although it can be used to provide data to a QListView. If you need to represent a simple list of items, and only need a model to contain a single column of data, subclassing the QAbstractListModel may be more appropriate.

The rowCount() and columnCount() functions return the dimensions of the table. To retrieve a model index corresponding to an item in the model, use index() and provide only the row and column numbers.

Subclassing#

When subclassing QAbstractTableModel , you must implement rowCount() , columnCount() , and data() . Default implementations of the index() and parent() functions are provided by QAbstractTableModel . Well behaved models will also implement headerData() .

Editable models need to implement setData() , and implement flags() to return a value containing ItemIsEditable .

Models that provide interfaces to resizable data structures can provide implementations of insertRows() , removeRows() , insertColumns() , and removeColumns() . When implementing these functions, it is important to call the appropriate functions so that all connected views are aware of any changes:

Note

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

Thread safety#

Being a subclass of QObject, QAbstractTableModel is not thread-safe . Any QAbstractTableModel model-related API should only be called from the thread the model object lives in. If the QAbstractTableModel is connected with a view, that means the GUI thread, as that is where the view lives, and it will call into the model from the GUI thread. Using a background thread to populate or modify the contents of a model is possible, but requires care, as the background thread cannot call any model-related API directly. Instead, you should queue the updates and apply them in the main thread. This can be done with queued connections.

class PySide6.QtCore.QAbstractTableModel([parent=None])#
Parameters:

parentPySide6.QtCore.QObject

Constructs an abstract table model for the given parent.