QTableWidget Class
La clase QTableWidget proporciona una vista de tabla basada en ítems con un modelo por defecto. Más...
| Cabecera: | #include <QTableWidget> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets)target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| Hereda: | QTableView |
Propiedades
- columnCount : int
- rowCount : int
(since 6.10)supportedDragActions : Qt::DropActions
Funciones públicas
| QTableWidget(QWidget *parent = nullptr) | |
| QTableWidget(int rows, int columns, QWidget *parent = nullptr) | |
| virtual | ~QTableWidget() |
| QWidget * | cellWidget(int row, int column) const |
| void | closePersistentEditor(QTableWidgetItem *item) |
| int | column(const QTableWidgetItem *item) const |
| int | columnCount() const |
| int | currentColumn() const |
| QTableWidgetItem * | currentItem() const |
| int | currentRow() const |
| void | editItem(QTableWidgetItem *item) |
| QList<QTableWidgetItem *> | findItems(const QString &text, Qt::MatchFlags flags) const |
| QTableWidgetItem * | horizontalHeaderItem(int column) const |
| QModelIndex | indexFromItem(const QTableWidgetItem *item) const |
| bool | isPersistentEditorOpen(QTableWidgetItem *item) const |
| QTableWidgetItem * | item(int row, int column) const |
| QTableWidgetItem * | itemAt(const QPoint &point) const |
| QTableWidgetItem * | itemAt(int ax, int ay) const |
| QTableWidgetItem * | itemFromIndex(const QModelIndex &index) const |
| const QTableWidgetItem * | itemPrototype() const |
| QList<QTableWidgetItem *> | items(const QMimeData *data) const |
| void | openPersistentEditor(QTableWidgetItem *item) |
| void | removeCellWidget(int row, int column) |
| int | row(const QTableWidgetItem *item) const |
| int | rowCount() const |
| QList<QTableWidgetItem *> | selectedItems() const |
| QList<QTableWidgetSelectionRange> | selectedRanges() const |
| void | setCellWidget(int row, int column, QWidget *widget) |
| void | setColumnCount(int columns) |
| void | setCurrentCell(int row, int column) |
| void | setCurrentCell(int row, int column, QItemSelectionModel::SelectionFlags command) |
| void | setCurrentItem(QTableWidgetItem *item) |
| void | setCurrentItem(QTableWidgetItem *item, QItemSelectionModel::SelectionFlags command) |
| void | setHorizontalHeaderItem(int column, QTableWidgetItem *item) |
| void | setHorizontalHeaderLabels(const QStringList &labels) |
| void | setItem(int row, int column, QTableWidgetItem *item) |
| void | setItemPrototype(const QTableWidgetItem *item) |
| void | setRangeSelected(const QTableWidgetSelectionRange &range, bool select) |
| void | setRowCount(int rows) |
| void | setSupportedDragActions(Qt::DropActions actions) |
| void | setVerticalHeaderItem(int row, QTableWidgetItem *item) |
| void | setVerticalHeaderLabels(const QStringList &labels) |
| void | sortItems(int column, Qt::SortOrder order = Qt::AscendingOrder) |
| Qt::DropActions | supportedDragActions() const |
| QTableWidgetItem * | takeHorizontalHeaderItem(int column) |
| QTableWidgetItem * | takeItem(int row, int column) |
| QTableWidgetItem * | takeVerticalHeaderItem(int row) |
| QTableWidgetItem * | verticalHeaderItem(int row) const |
| int | visualColumn(int logicalColumn) const |
| QRect | visualItemRect(const QTableWidgetItem *item) const |
| int | visualRow(int logicalRow) const |
Ranuras públicas
| void | clear() |
| void | clearContents() |
| void | insertColumn(int column) |
| void | insertRow(int row) |
| void | removeColumn(int column) |
| void | removeRow(int row) |
| void | scrollToItem(const QTableWidgetItem *item, QAbstractItemView::ScrollHint hint = EnsureVisible) |
Señales
| void | cellActivated(int row, int column) |
| void | cellChanged(int row, int column) |
| void | cellClicked(int row, int column) |
| void | cellDoubleClicked(int row, int column) |
| void | cellEntered(int row, int column) |
| void | cellPressed(int row, int column) |
| void | currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn) |
| void | currentItemChanged(QTableWidgetItem *current, QTableWidgetItem *previous) |
| void | itemActivated(QTableWidgetItem *item) |
| void | itemChanged(QTableWidgetItem *item) |
| void | itemClicked(QTableWidgetItem *item) |
| void | itemDoubleClicked(QTableWidgetItem *item) |
| void | itemEntered(QTableWidgetItem *item) |
| void | itemPressed(QTableWidgetItem *item) |
| void | itemSelectionChanged() |
Funciones protegidas
| virtual bool | dropMimeData(int row, int column, const QMimeData *data, Qt::DropAction action) |
| virtual QMimeData * | mimeData(const QList<QTableWidgetItem *> &items) const |
| virtual QStringList | mimeTypes() const |
| virtual Qt::DropActions | supportedDropActions() const |
Funciones protegidas reimplementadas
Descripción detallada

Los widgets de tabla proporcionan facilidades estándar de visualización de tablas para las aplicaciones. Los elementos de un QTableWidget son proporcionados por QTableWidgetItem.
Si desea una tabla que utilice su propio modelo de datos debe utilizar QTableView en lugar de esta clase.
Los widgets de tabla pueden construirse con el número necesario de filas y columnas:
tableWidget = new QTableWidget(12, 3, this);
Alternativamente, las tablas pueden construirse sin un tamaño determinado y redimensionarse posteriormente:
tableWidget = new QTableWidget(this); tableWidget->setRowCount(10); tableWidget->setColumnCount(5);
Los elementos se crean fuera de la tabla (sin widget padre) y se insertan en la tabla con setItem():
QTableWidgetItem *newItem = new QTableWidgetItem(tr("%1").arg( (row+1)*(column+1))); tableWidget->setItem(row, column, newItem);
Si desea activar la ordenación en su widget de tabla, hágalo después de haberla rellenado con elementos, de lo contrario la ordenación puede interferir con el orden de inserción (véase setItem() para más detalles).
Las tablas pueden tener cabeceras horizontales y verticales. La forma más sencilla de crear las cabeceras es proporcionar una lista de cadenas a las funciones setHorizontalHeaderLabels() y setVerticalHeaderLabels(). Éstas proporcionarán cabeceras textuales sencillas para las columnas y filas de la tabla. Se pueden crear cabeceras más sofisticadas a partir de elementos existentes en la tabla que normalmente se construyen fuera de ella. Por ejemplo, podemos construir un elemento de tabla con un icono y texto alineado, y utilizarlo como cabecera de una columna concreta:
QTableWidgetItem *cubesHeaderItem = new QTableWidgetItem(tr("Cubes")); cubesHeaderItem->setIcon(QIcon(QPixmap(":/Images/cubed.png"))); cubesHeaderItem->setTextAlignment(Qt::AlignVCenter);
El número de filas de la tabla se puede averiguar con rowCount(), y el número de columnas con columnCount(). La tabla puede borrarse con la función clear().
Véase también QTableWidgetItem, QTableView, y Programación Modelo/Vista.
Documentación de propiedades
columnCount : int
Esta propiedad contiene el número de columnas de la tabla
Por defecto, para una tabla construida sin recuento de filas y columnas, esta propiedad contiene el valor 0.
Funciones de acceso:
| int | columnCount() const |
| void | setColumnCount(int columns) |
rowCount : int
Esta propiedad contiene el número de filas de la tabla
Por defecto, para una tabla construida sin recuento de filas y columnas, esta propiedad contiene el valor 0.
Funciones de acceso:
| int | rowCount() const |
| void | setRowCount(int rows) |
[since 6.10] supportedDragActions : Qt::DropActions
Esta propiedad contiene las acciones de arrastre soportadas por esta vista
Esta propiedad se introdujo en Qt 6.10.
Funciones de acceso:
| Qt::DropActions | supportedDragActions() const |
| void | setSupportedDragActions(Qt::DropActions actions) |
Véase también Qt::DropActions y supportedDropActions().
Documentación de las funciones miembro
[explicit] QTableWidget::QTableWidget(QWidget *parent = nullptr)
Crea una nueva vista de tabla con la dirección parent.
QTableWidget::QTableWidget(int rows, int columns, QWidget *parent = nullptr)
Crea una nueva vista de tabla con los datos rows y columns, y con el dato parent.
[virtual noexcept] QTableWidget::~QTableWidget()
Destruye este QTableWidget.
[signal] void QTableWidget::cellActivated(int row, int column)
Esta señal se emite cuando se ha activado la célula especificada por row y column
[signal] void QTableWidget::cellChanged(int row, int column)
Esta señal se emite siempre que han cambiado los datos del elemento en la celda especificada por row y column.
[signal] void QTableWidget::cellClicked(int row, int column)
Esta señal se emite cada vez que se hace clic en una celda de la tabla. Las direcciones row y column especificadas son la celda sobre la que se ha hecho clic.
[signal] void QTableWidget::cellDoubleClicked(int row, int column)
Esta señal se emite cada vez que se hace doble clic en una celda de la tabla. Las direcciones row y column especificadas son la celda sobre la que se ha hecho doble clic.
[signal] void QTableWidget::cellEntered(int row, int column)
Esta señal se emite cuando el cursor del ratón entra en una celda. La celda está especificada por row y column.
Esta señal sólo se emite cuando mouseTracking está activado, o cuando se pulsa un botón del ratón al entrar en un elemento.
[signal] void QTableWidget::cellPressed(int row, int column)
Esta señal se emite cada vez que se pulsa una celda de la tabla. Las direcciones row y column especificadas son la celda que se ha pulsado.
QWidget *QTableWidget::cellWidget(int row, int column) const
Devuelve el widget que aparece en la celda de row y column.
Nota: La tabla toma posesión del widget.
Véase también setCellWidget().
[slot] void QTableWidget::clear()
Elimina todos los elementos de la vista. Esto también eliminará todas las selecciones y cabeceras. Si no desea eliminar los encabezados, utilice QTableWidget::clearContents(). Las dimensiones de la tabla no cambian.
[slot] void QTableWidget::clearContents()
Elimina de la vista todos los elementos que no aparecen en las cabeceras. Esto también eliminará todas las selecciones. Las dimensiones de la tabla no cambian.
void QTableWidget::closePersistentEditor(QTableWidgetItem *item)
Cierra el editor persistente para item.
Véase también openPersistentEditor() y isPersistentEditorOpen().
int QTableWidget::column(const QTableWidgetItem *item) const
Devuelve la columna de item.
int QTableWidget::columnCount() const
Devuelve el número de columnas.
Nota: Función Getter para la propiedad columnCount.
Véase también setColumnCount().
[signal] void QTableWidget::currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn)
Esta señal se emite cada vez que cambia la celda actual. La celda especificada por previousRow y previousColumn es la celda que anteriormente tenía el foco, la celda especificada por currentRow y currentColumn es la nueva celda actual.
int QTableWidget::currentColumn() const
Devuelve la columna del elemento actual.
Véase también currentRow() y setCurrentCell().
QTableWidgetItem *QTableWidget::currentItem() const
Devuelve el elemento actual.
Véase también setCurrentItem().
[signal] void QTableWidget::currentItemChanged(QTableWidgetItem *current, QTableWidgetItem *previous)
Esta señal se emite cada vez que cambia el elemento actual. El elemento previous es el elemento que anteriormente tenía el foco, current es el nuevo elemento actual.
int QTableWidget::currentRow() const
Devuelve la fila del elemento actual.
Véase también currentColumn() y setCurrentCell().
[override virtual protected] void QTableWidget::dropEvent(QDropEvent *event)
Reimplementa: QTableView::dropEvent(QDropEvent *event).
[virtual protected] bool QTableWidget::dropMimeData(int row, int column, const QMimeData *data, Qt::DropAction action)
Maneja el data suministrado por una operación de arrastrar y soltar que terminó con el action dado en los row y column dados . Devuelve true si los datos y la acción pueden ser manejados por el modelo; en caso contrario devuelve false.
Véase también supportedDropActions() y supportedDragActions.
void QTableWidget::editItem(QTableWidgetItem *item)
Inicia la edición de item si es editable.
[override virtual protected] bool QTableWidget::event(QEvent *e)
Reimplementa: QAbstractItemView::event(QEvent *event).
QList<QTableWidgetItem *> QTableWidget::findItems(const QString &text, Qt::MatchFlags flags) const
Busca elementos que coincidan con la dirección text utilizando la dirección flags.
QTableWidgetItem *QTableWidget::horizontalHeaderItem(int column) const
Devuelve el elemento de cabecera horizontal de la columna, column, si se ha establecido uno; en caso contrario devuelve nullptr.
Véase también setHorizontalHeaderItem().
QModelIndex QTableWidget::indexFromItem(const QTableWidgetItem *item) const
Devuelve el QModelIndex asociado con el item dado.
Nota: En versiones de Qt anteriores a la 5.10, esta función tomaba un item que no eraconst.
[slot] void QTableWidget::insertColumn(int column)
Inserta una columna vacía en la tabla en column.
[slot] void QTableWidget::insertRow(int row)
Inserta una fila vacía en la tabla en row.
bool QTableWidget::isPersistentEditorOpen(QTableWidgetItem *item) const
Devuelve si hay un editor persistente abierto para el elemento item.
Véase también openPersistentEditor() y closePersistentEditor().
QTableWidgetItem *QTableWidget::item(int row, int column) const
Devuelve el elemento para el row dado y column si se ha establecido uno; en caso contrario devuelve nullptr.
Véase también setItem().
[signal] void QTableWidget::itemActivated(QTableWidgetItem *item)
Esta señal se emite cuando se ha activado el item especificado
QTableWidgetItem *QTableWidget::itemAt(const QPoint &point) const
Devuelve un puntero al elemento en el point dado , o devuelve nullptr si point no está cubierto por un elemento en el widget de tabla.
Véase también item().
QTableWidgetItem *QTableWidget::itemAt(int ax, int ay) const
Devuelve el elemento en la posición equivalente a QPoint(ax, ay) en el sistema de coordenadas del widget de tabla, o devuelve nullptr si el punto especificado no está cubierto por un elemento del widget de tabla.
Véase también item().
[signal] void QTableWidget::itemChanged(QTableWidgetItem *item)
Esta señal se emite cuando cambian los datos de item.
[signal] void QTableWidget::itemClicked(QTableWidgetItem *item)
Esta señal se emite cada vez que se hace clic en un elemento de la tabla. El item especificado es el elemento sobre el que se ha hecho clic.
[signal] void QTableWidget::itemDoubleClicked(QTableWidgetItem *item)
Esta señal se emite cada vez que se hace doble clic sobre un elemento de la tabla. El item especificado es el elemento sobre el que se ha hecho doble clic.
[signal] void QTableWidget::itemEntered(QTableWidgetItem *item)
Esta señal se emite cuando el cursor del ratón entra en un elemento. El item es el elemento introducido.
Esta señal sólo se emite cuando mouseTracking está activado, o cuando se pulsa un botón del ratón mientras se mueve en un elemento.
QTableWidgetItem *QTableWidget::itemFromIndex(const QModelIndex &index) const
Devuelve un puntero a la dirección QTableWidgetItem asociada a la dirección index.
[signal] void QTableWidget::itemPressed(QTableWidgetItem *item)
Esta señal se emite cada vez que se pulsa un elemento de la tabla. El item especificado es el elemento que se ha pulsado.
const QTableWidgetItem *QTableWidget::itemPrototype() const
Devuelve el prototipo de elemento utilizado por la tabla.
Véase también setItemPrototype().
[signal] void QTableWidget::itemSelectionChanged()
Esta señal se emite cada vez que cambia la selección.
Véase también selectedItems() y QTableWidgetItem::isSelected().
QList<QTableWidgetItem *> QTableWidget::items(const QMimeData *data) const
Devuelve una lista de punteros a los elementos contenidos en el objeto data. Si el objeto no fue creado por un QTreeWidget en el mismo proceso, la lista está vacía.
[virtual protected] QMimeData *QTableWidget::mimeData(const QList<QTableWidgetItem *> &items) const
Devuelve un objeto que contiene una descripción serializada del items especificado. El formato utilizado para describir los elementos se obtiene de la función mimeTypes().
Si la lista de elementos está vacía, se devuelve nullptr en lugar de una lista vacía serializada.
[virtual protected] QStringList QTableWidget::mimeTypes() const
Devuelve una lista de tipos MIME que pueden utilizarse para describir una lista de elementos tablewidget.
Véase también mimeData().
void QTableWidget::openPersistentEditor(QTableWidgetItem *item)
Abre un editor para dar item. El editor permanece abierto después de la edición.
Véase también closePersistentEditor() y isPersistentEditorOpen().
void QTableWidget::removeCellWidget(int row, int column)
Elimina el widget establecido en la celda indicada por row y column.
[slot] void QTableWidget::removeColumn(int column)
Elimina la columna column y todos sus elementos de la tabla.
[slot] void QTableWidget::removeRow(int row)
Elimina la fila row y todos sus elementos de la tabla.
int QTableWidget::row(const QTableWidgetItem *item) const
Devuelve la fila de item.
int QTableWidget::rowCount() const
Devuelve el número de filas.
Nota: Función Getter para la propiedad rowCount.
Véase también setRowCount().
[slot] void QTableWidget::scrollToItem(const QTableWidgetItem *item, QAbstractItemView::ScrollHint hint = EnsureVisible)
Desplaza la vista si es necesario para garantizar la visibilidad de item. El parámetro hint especifica con mayor precisión dónde debe situarse item tras la operación.
QList<QTableWidgetItem *> QTableWidget::selectedItems() const
Devuelve una lista de todos los elementos seleccionados.
Esta función devuelve una lista de punteros al contenido de las celdas seleccionadas. Utilice la función selectedIndexes() para recuperar la selección completa , incluidas las celdas vacías.
Véase también selectedIndexes().
QList<QTableWidgetSelectionRange> QTableWidget::selectedRanges() const
Devuelve una lista de todos los rangos seleccionados.
Véase también QTableWidgetSelectionRange.
void QTableWidget::setCellWidget(int row, int column, QWidget *widget)
Establece el widget dado para que se muestre en la celda en los row y column dados , pasando la propiedad del widget a la tabla.
Si el widget de la celda A se sustituye por el widget de la celda B, el widget de la celda A se eliminará. Por ejemplo, en el fragmento de código siguiente, se eliminará el objeto QLineEdit.
Véase también cellWidget().
void QTableWidget::setColumnCount(int columns)
Establece el número de columnas del modelo de esta tabla en columns. Si es inferior a columnCount(), se descartan los datos de las columnas no deseadas.
Nota: Función setter para la propiedad columnCount.
Véase también columnCount() y setRowCount().
void QTableWidget::setCurrentCell(int row, int column)
Establece la celda actual en la posición (row, column).
Dependiendo de la selection mode actual, la celda también puede ser seleccionada.
Véase también setCurrentItem(), currentRow(), y currentColumn().
void QTableWidget::setCurrentCell(int row, int column, QItemSelectionModel::SelectionFlags command)
Establece que la celda actual sea la celda en la posición (row, column), usando el command dado.
Véase también setCurrentItem(), currentRow(), y currentColumn().
void QTableWidget::setCurrentItem(QTableWidgetItem *item)
Establece el elemento actual en item.
A menos que el modo de selección sea NoSelection, el elemento también se selecciona.
Véase también currentItem() y setCurrentCell().
void QTableWidget::setCurrentItem(QTableWidgetItem *item, QItemSelectionModel::SelectionFlags command)
Establece que el elemento actual sea item, utilizando el command dado.
Véase también currentItem() y setCurrentCell().
void QTableWidget::setHorizontalHeaderItem(int column, QTableWidgetItem *item)
Establece el elemento de cabecera horizontal para la columna column en item. Si es necesario, el recuento de columnas se incrementa para que quepa el elemento. El elemento de cabecera anterior (si existía) se elimina.
Véase también horizontalHeaderItem().
void QTableWidget::setHorizontalHeaderLabels(const QStringList &labels)
Establece las etiquetas de cabecera horizontales utilizando labels.
void QTableWidget::setItem(int row, int column, QTableWidgetItem *item)
Establece el elemento para los datos row y column en item.
La tabla toma posesión del elemento.
Tenga en cuenta que si la ordenación está activada (véase sortingEnabled) y column es la columna de ordenación actual, row se moverá a la posición ordenada determinada por item.
Si desea establecer varios elementos de una fila en particular (por ejemplo, llamando a setItem() en un bucle), puede desactivar la ordenación antes de hacerlo, y volver a activarla después; esto le permitirá utilizar el mismo argumento row para todos los elementos de la misma fila (es decir, setItem() no moverá la fila).
Véase también item() y takeItem().
void QTableWidget::setItemPrototype(const QTableWidgetItem *item)
Establece el prototipo de elemento de la tabla en la dirección item especificada.
El widget de tabla utilizará la función de clonación del prototipo de elemento cuando necesite crear un nuevo elemento de tabla. Por ejemplo cuando el usuario está editando en una celda vacía. Esto es útil cuando tienes una subclase QTableWidgetItem y quieres asegurarte de que QTableWidget crea instancias de tu subclase.
La tabla toma posesión del prototipo.
Véase también itemPrototype().
void QTableWidget::setRangeSelected(const QTableWidgetSelectionRange &range, bool select)
Selecciona o anula la selección de range en función de select.
void QTableWidget::setRowCount(int rows)
Establece el número de filas del modelo de esta tabla en rows. Si es inferior a rowCount(), se descartan los datos de las filas no deseadas.
Nota: Función setter para la propiedad rowCount.
Véase también rowCount() y setColumnCount().
void QTableWidget::setVerticalHeaderItem(int row, QTableWidgetItem *item)
Establece el elemento de cabecera vertical de la fila row en item.
Véase también verticalHeaderItem().
void QTableWidget::setVerticalHeaderLabels(const QStringList &labels)
Establece las etiquetas de cabecera verticales utilizando labels.
void QTableWidget::sortItems(int column, Qt::SortOrder order = Qt::AscendingOrder)
Ordena todas las filas del widget de tabla basándose en column y order.
[virtual protected] Qt::DropActions QTableWidget::supportedDropActions() const
Devuelve las acciones de soltar soportadas por esta vista.
Véase también Qt::DropActions, supportedDragActions, y dropMimeData().
QTableWidgetItem *QTableWidget::takeHorizontalHeaderItem(int column)
Elimina el elemento de cabecera horizontal en column de la cabecera sin borrarlo.
QTableWidgetItem *QTableWidget::takeItem(int row, int column)
Elimina el elemento en row y column de la tabla sin borrarlo.
QTableWidgetItem *QTableWidget::takeVerticalHeaderItem(int row)
Elimina el elemento de cabecera vertical en row de la cabecera sin borrarlo.
QTableWidgetItem *QTableWidget::verticalHeaderItem(int row) const
Devuelve el elemento de cabecera vertical de la fila row.
Véase también setVerticalHeaderItem().
int QTableWidget::visualColumn(int logicalColumn) const
Devuelve la columna visual de la dirección logicalColumn.
QRect QTableWidget::visualItemRect(const QTableWidgetItem *item) const
Devuelve el rectángulo de la ventana gráfica ocupado por el elemento en item.
int QTableWidget::visualRow(int logicalRow) const
Devuelve la fila visual de la dirección logicalRow.
© 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.