PySide6.QtCore.QAbstractTableModel¶
- class QAbstractTableModel¶
- The - QAbstractTableModelclass provides an abstract model that can be subclassed to create table models. More…- Inherited by: - QSqlQueryModel,- QSqlTableModel,- QSqlRelationalTableModel- 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¶- QAbstractTableModelprovides 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- QAbstractListModelmay 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:- An - insertRows()implementation must call- beginInsertRows()before inserting new rows into the data structure, and it must call- endInsertRows()immediately afterwards.
- An - insertColumns()implementation must call- beginInsertColumns()before inserting new columns into the data structure, and it must call- endInsertColumns()immediately afterwards.
- A - removeRows()implementation must call- beginRemoveRows()before the rows are removed from the data structure, and it must call- endRemoveRows()immediately afterwards.
- A - removeColumns()implementation must call- beginRemoveColumns()before the columns are removed from the data structure, and it must call- endRemoveColumns()immediately afterwards.
 - Note - Some general guidelines for subclassing models are available in the Model Subclassing Reference. - Thread safety¶- Being a subclass of QObject, - QAbstractTableModelis not- thread-safe. Any- QAbstractTableModelmodel-related API should only be called from the thread the model object lives in. If the- QAbstractTableModelis 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.- See also - Constructs an abstract table model for the given - parent.