QAbstractTableModel Class
La clase QAbstractTableModel provee un modelo abstracto que puede ser subclasificado para crear modelos de tablas. Más...
| Cabecera: | #include <QAbstractTableModel> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core)target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
| Hereda: | QAbstractItemModel |
| Heredado por: |
Funciones Públicas
| QAbstractTableModel(QObject *parent = nullptr) | |
| virtual | ~QAbstractTableModel() |
Funciones públicas reimplementadas
| virtual bool | dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override |
| virtual Qt::ItemFlags | flags(const QModelIndex &index) const override |
| virtual QModelIndex | index(int row, int column, const QModelIndex &parent = QModelIndex()) const override |
| virtual QModelIndex | sibling(int row, int column, const QModelIndex &idx) const override |
Descripción Detallada
QAbstractTableModel proporciona una interfaz estándar para los modelos que representan sus datos como una matriz bidimensional de elementos. No se utiliza directamente, sino que debe subclasificarse.
Dado que el modelo proporciona una interfaz más especializada que QAbstractItemModel, no es adecuado para su uso con vistas de árbol, aunque puede utilizarse para proporcionar datos a un QListView. Si necesita representar una lista simple de elementos, y sólo necesita un modelo que contenga una única columna de datos, puede ser más apropiado subclasificar el QAbstractListModel.
Las funciones rowCount() y columnCount() devuelven las dimensiones de la tabla. Para recuperar un índice de modelo correspondiente a un elemento del modelo, utilice index() y proporcione únicamente los números de fila y columna.
Subclases
Cuando subclase QAbstractTableModel, debe implementar rowCount(), columnCount(), y data(). QAbstractTableModel proporciona implementaciones por defecto de las funciones index() y parent(). Los modelos con buen comportamiento también implementarán headerData().
Los modelos editables necesitan implementar setData(), e implementar flags() para devolver un valor que contenga Qt::ItemIsEditable.
Los modelos que proporcionan interfaces a estructuras de datos redimensionables pueden proporcionar implementaciones de insertRows(), removeRows(), insertColumns(), y removeColumns(). Al implementar estas funciones, es importante llamar a las funciones apropiadas para que todas las vistas conectadas sean conscientes de cualquier cambio:
- Una implementación de insertRows() debe llamar a beginInsertRows() antes de insertar nuevas filas en la estructura de datos, y debe llamar a endInsertRows() inmediatamente después.
- Una implementación de insertColumns() debe llamar a beginInsertColumns() antes de insertar nuevas columnas en la estructura de datos, y debe llamar a endInsertColumns() inmediatamente después.
- Una implementación de removeRows() debe llamar a beginRemoveRows() antes de eliminar filas de la estructura de datos, y debe llamar a endRemoveRows() inmediatamente después.
- Una implementación de removeColumns() debe llamar a beginRemoveColumns() antes de que se eliminen las columnas de la estructura de datos, y debe llamar a endRemoveColumns() inmediatamente después.
Nota: Algunas directrices generales para subclasificar modelos están disponibles en la Referencia de subclasificación de modelos.
Seguridad de los hilos
Al ser una subclase de QObject, QAbstractTableModel no es thread-safe. Cualquier API relacionada con el modelo QAbstractTableModel sólo debe ser llamada desde el thread en el que vive el objeto modelo. Si QAbstractTableModel está conectado a una vista, opera en el hilo GUI, ya que la vista reside allí e interactúa con el modelo desde ese hilo. Aunque se puede utilizar un subproceso en segundo plano para rellenar o modificar el contenido del modelo, debe hacerlo con cuidado, ya que no puede llamar directamente a ninguna API relacionada con el modelo. En su lugar, debe poner en cola las actualizaciones y aplicarlas en el hilo principal. Esto puede hacerse con conexiones en cola.
Véase también Clases de modelos, QAbstractItemModel, y QAbstractListModel.
Documentación de las funciones miembro
[explicit] QAbstractTableModel::QAbstractTableModel(QObject *parent = nullptr)
Construye un modelo abstracto de tabla para la dirección parent.
[virtual noexcept] QAbstractTableModel::~QAbstractTableModel()
Destruye el modelo abstracto de la tabla.
[override virtual] bool QAbstractTableModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent)
Reimplementa: QAbstractItemModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent).
[override virtual] Qt::ItemFlags QAbstractTableModel::flags(const QModelIndex &index) const
Reimplementa: QAbstractItemModel::flags(const QModelIndex &index) const.
[override virtual] QModelIndex QAbstractTableModel::index(int row, int column, const QModelIndex &parent = QModelIndex()) const
Reimplementa: QAbstractItemModel::index(int fila, int columna, const QModelIndex &parent) const.
Devuelve el índice de los datos en row y column con parent.
Véase también parent().
[override virtual] QModelIndex QAbstractTableModel::sibling(int row, int column, const QModelIndex &idx) const
Reimplementa: QAbstractItemModel::sibling(int fila, int columna, const QModelIndex &index) const.
© 2026 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.