En esta página

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

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

virtual void dropEvent(QDropEvent *event) override
virtual bool event(QEvent *e) override

Descripción detallada

Cuadro de meses e importes

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.

setCellWidget(row, column, new QLineEdit);
...
setCellWidget(row, column, new QTextEdit);

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.