QTableWidget Class
QTableWidget 类提供了一个具有默认模型的基于项目的表格视图。更多
Header: | #include <QTableWidget> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
qmake: | QT += widgets |
继承: | QTableView |
属性
- columnCount : int
- rowCount : int
公共功能
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 | setVerticalHeaderItem(int row, QTableWidgetItem *item) |
void | setVerticalHeaderLabels(const QStringList &labels) |
void | sortItems(int column, Qt::SortOrder order = Qt::AscendingOrder) |
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 |
公共插槽
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) |
信号
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() |
受保护函数
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 |
重新实现的受保护函数
详细说明
表格部件为应用程序提供标准的表格显示功能。QTableWidget 中的项目由QTableWidgetItem 提供。
如果您想创建一个使用自己数据模型的表格,应使用QTableView 而不是该类。
表格部件可按所需的行数和列数构建:
tableWidget = new QTableWidget(12, 3, this);
另外,也可以在没有给定大小的情况下创建表格,然后再调整大小:
tableWidget = new QTableWidget(this); tableWidget->setRowCount(10); tableWidget->setColumnCount(5);
项目是在表外创建的(没有父部件),并通过setItem() 插入表中:
QTableWidgetItem *newItem = new QTableWidgetItem(tr("%1").arg( (row+1)*(column+1))); tableWidget->setItem(row, column, newItem);
如果想在表格 widget 中启用排序功能,请在填充项目后再启用,否则排序可能会影响插入顺序(详情请参见setItem())。
表格可以有水平和垂直标题。创建表头的最简单方法是向setHorizontalHeaderLabels() 和setVerticalHeaderLabels() 函数提供字符串列表。这将为表格的列和行提供简单的文本标题。更复杂的表头可以从现有的表项中创建,这些表项通常是在表外构建的。例如,我们可以创建一个带有图标和对齐文本的表项,并将其用作特定列的表头:
QTableWidgetItem *cubesHeaderItem = new QTableWidgetItem(tr("Cubes")); cubesHeaderItem->setIcon(QIcon(QPixmap(":/Images/cubed.png"))); cubesHeaderItem->setTextAlignment(Qt::AlignVCenter);
表格的行数可以用rowCount() 查找,列数可以用columnCount() 查找。可以使用clear() 函数清除表格。
另请参阅 QTableWidgetItem,QTableView 和模型/视图编程。
属性文档
columnCount : int
该属性表示表格中的列数
默认情况下,对于没有行数和列数的表格,该属性的值为 0。
访问函数
int | columnCount() const |
void | setColumnCount(int columns) |
rowCount : int
该属性表示表格中的行数
默认情况下,对于没有行数和列数的表格,该属性的值为 0。
访问函数
int | rowCount() const |
void | setRowCount(int rows) |
成员函数文档
[explicit]
QTableWidget::QTableWidget(QWidget *parent = nullptr)
使用给定的parent 创建新的表格视图。
QTableWidget::QTableWidget(int rows, int columns, QWidget *parent = nullptr)
使用给定的rows 和columns 以及给定的parent 创建新表视图。
[virtual noexcept]
QTableWidget::~QTableWidget()
摧毁QTableWidget.
[signal]
void QTableWidget::cellActivated(int row, int column)
当row 和column 指定的单元格被激活时,会发出该信号
[signal]
void QTableWidget::cellChanged(int row, int column)
当row 和column 指定的单元格中的项目数据发生变化时,就会发出该信号。
[signal]
void QTableWidget::cellClicked(int row, int column)
每当点击表格中的一个单元格时,就会发出该信号。row 和column 指定的是被点击的单元格。
[signal]
void QTableWidget::cellDoubleClicked(int row, int column)
每当表格中的某个单元格被双击时,就会发出该信号。指定的row 和column 是被双击的单元格。
[signal]
void QTableWidget::cellEntered(int row, int column)
当鼠标光标进入一个单元格时会发出该信号。单元格由row 和column 指定。
只有在打开 mouseTracking 或在移动到一个项目时按下鼠标按钮时,才会发出该信号。
[signal]
void QTableWidget::cellPressed(int row, int column)
每当表格中的一个单元格被按下时,就会发出该信号。row 和column 指定的是被按下的单元格。
QWidget *QTableWidget::cellWidget(int row, int column) const
在给定的row 和column 中,返回单元格中显示的 widget。
注: 表格拥有 widget 的所有权。
另请参阅 setCellWidget()。
[slot]
void QTableWidget::clear()
删除视图中的所有项目。这也会删除所有选择和标题。如果不想删除页眉,请使用QTableWidget::clearContents()。表格尺寸保持不变。
[slot]
void QTableWidget::clearContents()
从视图中删除不在标题中的所有项目。这也会删除所有选择。表格尺寸保持不变。
void QTableWidget::closePersistentEditor(QTableWidgetItem *item)
关闭item 的持久编辑器。
另请参阅 openPersistentEditor() 和isPersistentEditorOpen()。
int QTableWidget::column(const QTableWidgetItem *item) const
返回item 的列。
int QTableWidget::columnCount() const
返回列数。
注: 属性 columnCount 的获取函数。
另请参阅 setColumnCount().
[signal]
void QTableWidget::currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn)
每当当前单元格发生变化时,就会发出该信号。previousRow 和previousColumn 指定的单元格是之前拥有焦点的单元格,currentRow 和currentColumn 指定的单元格是新的当前单元格。
int QTableWidget::currentColumn() const
返回当前项目的列。
另请参阅 currentRow() 和setCurrentCell()。
QTableWidgetItem *QTableWidget::currentItem() const
返回当前项目。
另请参阅 setCurrentItem()。
[signal]
void QTableWidget::currentItemChanged(QTableWidgetItem *current, QTableWidgetItem *previous)
每当当前项目发生变化时,就会发出该信号。previous 项目是之前拥有焦点的项目,current 是新的当前项目。
int QTableWidget::currentRow() const
返回当前项目的行。
另请参阅 currentColumn() 和setCurrentCell()。
[override virtual protected]
void QTableWidget::dropEvent(QDropEvent *event)
重实现:QTableView::dropEvent(QDropEvent *event).
[virtual protected]
bool QTableWidget::dropMimeData(int row, int column, const QMimeData *data, Qt::DropAction action)
在给定的row 和column 中处理以给定的action 结束的拖放操作所提供的data 。如果模型可以处理数据和操作,则返回true
;否则返回false
。
另请参阅 supportedDropActions()。
void QTableWidget::editItem(QTableWidgetItem *item)
开始编辑item (如果可以编辑)。
[override virtual protected]
bool QTableWidget::event(QEvent *e)
重实现:QAbstractItemView::event(QEvent *event).
QList<QTableWidgetItem *> QTableWidget::findItems(const QString &text, Qt::MatchFlags flags) const
使用给定的flags 查找与text 匹配的项目。
QTableWidgetItem *QTableWidget::horizontalHeaderItem(int column) const
如果已设置column ,则返回列的水平标题项;否则返回nullptr
。
另请参阅 setHorizontalHeaderItem() 。
QModelIndex QTableWidget::indexFromItem(const QTableWidgetItem *item) const
返回与给定item 相关的QModelIndex 。
注: 在 5.10 之前的 Qt 版本中,该函数使用非const
item 。
[slot]
void QTableWidget::insertColumn(int column)
在column 的表格中插入空列。
[slot]
void QTableWidget::insertRow(int row)
在row 的表格中插入空行。
bool QTableWidget::isPersistentEditorOpen(QTableWidgetItem *item) const
返回项目item 的持久编辑器是否打开。
另请参阅 openPersistentEditor() 和closePersistentEditor()。
QTableWidgetItem *QTableWidget::item(int row, int column) const
如果已设置row 和column ,则返回给定 和 的项目;否则返回nullptr
。
另请参见 setItem()。
[signal]
void QTableWidget::itemActivated(QTableWidgetItem *item)
当指定的item 被激活时会发出该信号
QTableWidgetItem *QTableWidget::itemAt(const QPoint &point) const
返回指向给定point 的项目指针,如果point 没有被表部件中的项目覆盖,则返回nullptr
。
另请参阅 item() 。
QTableWidgetItem *QTableWidget::itemAt(int ax, int ay) const
返回在表格 widget 坐标系中与QPoint(ax,ay) 相对应位置上的项目,如果指定点没有被表格 widget 中的项目覆盖,则返回nullptr
。
另请参阅 item() 。
[signal]
void QTableWidget::itemChanged(QTableWidgetItem *item)
只要item 的数据发生变化,就会发出该信号。
[signal]
void QTableWidget::itemClicked(QTableWidgetItem *item)
每当点击表格中的一个项目时,就会发出该信号。item 指定的是被点击的项目。
[signal]
void QTableWidget::itemDoubleClicked(QTableWidgetItem *item)
每当表格中的一个项目被双击时,就会发出该信号。指定的item 是被双击的项目。
[signal]
void QTableWidget::itemEntered(QTableWidgetItem *item)
当鼠标光标进入一个项目时发出该信号。item 是进入的项目。
该信号只有在打开 mouseTracking(鼠标跟踪)或在移动到一个项目时按下鼠标按钮时才会发出。
QTableWidgetItem *QTableWidget::itemFromIndex(const QModelIndex &index) const
返回与给定index 相关的QTableWidgetItem 的指针。
[signal]
void QTableWidget::itemPressed(QTableWidgetItem *item)
每当表格中的一个项目被按下时就会发出该信号。item 指定的是被按下的项目。
const QTableWidgetItem *QTableWidget::itemPrototype() const
返回表格使用的项目原型。
另请参阅 setItemPrototype()。
[signal]
void QTableWidget::itemSelectionChanged()
每当选择发生变化时,就会发出该信号。
另请参阅 selectedItems() 和QTableWidgetItem::isSelected()。
QList<QTableWidgetItem *> QTableWidget::items(const QMimeData *data) const
返回data 对象中包含的项目的指针列表。如果该对象不是由QTreeWidget 在同一进程中创建的,则列表为空。
[virtual protected]
QMimeData *QTableWidget::mimeData(const QList<QTableWidgetItem *> &items) const
返回一个包含指定items 的序列化描述的对象。用于描述项目的格式可从mimeTypes() 函数中获取。
如果项目列表为空,则返回nullptr
,而不是序列化的空列表。
[virtual protected]
QStringList QTableWidget::mimeTypes() const
返回可用于描述 tablewidget 项目列表的 MIME 类型列表。
另请参见 mimeData()。
void QTableWidget::openPersistentEditor(QTableWidgetItem *item)
打开给定item 的编辑器。编辑后,编辑器仍保持打开状态。
另请参阅 closePersistentEditor() 和isPersistentEditorOpen() 。
void QTableWidget::removeCellWidget(int row, int column)
删除row 和column 所指示单元格中设置的 widget。
[slot]
void QTableWidget::removeColumn(int column)
从表中删除column 列及其所有项目。
[slot]
void QTableWidget::removeRow(int row)
从表中删除row 行及其所有项目。
int QTableWidget::row(const QTableWidgetItem *item) const
返回item 的行。
int QTableWidget::rowCount() const
返回行数。
注: 属性 rowCount 的获取函数。
另请参阅 setRowCount().
[slot]
void QTableWidget::scrollToItem(const QTableWidgetItem *item, QAbstractItemView::ScrollHint hint = EnsureVisible)
必要时滚动视图以确保item 可见。hint 参数可更精确地指定操作后item 的位置。
QList<QTableWidgetItem *> QTableWidget::selectedItems() const
返回所有选中项的列表。
该函数返回指向所选单元格内容的指针列表。使用selectedIndexes() 函数可获取包括空单元格在内的完整选中项。
另请参阅 selectedIndexes()。
QList<QTableWidgetSelectionRange> QTableWidget::selectedRanges() const
返回所有选定范围的列表。
另请参见 QTableWidgetSelectionRange 。
void QTableWidget::setCellWidget(int row, int column, QWidget *widget)
将给定的widget 设置为显示在给定的row 和column 的单元格中,并将 Widget 的所有权传递给表格。
如果单元格部件 A 被单元格部件 B 取代,单元格部件 A 将被删除。例如,在下面的代码段中,QLineEdit 对象将被删除。
另请参见 cellWidget()。
void QTableWidget::setColumnCount(int columns)
将此表模型中的列数设置为columns 。如果小于columnCount() ,不需要的列中的数据将被丢弃。
注: 属性columnCount 的设置函数。
另请参阅 columnCount() 和setRowCount()。
void QTableWidget::setCurrentCell(int row, int column)
将当前单元格设置为位置 (row,column) 的单元格。
根据当前selection mode ,该单元格也可能被选中。
另请参阅 setCurrentItem()、currentRow() 和currentColumn()。
void QTableWidget::setCurrentCell(int row, int column, QItemSelectionModel::SelectionFlags command)
使用给定的command ,将当前单元格设置为位置 (row,column) 处的单元格。
另请参阅 setCurrentItem()、currentRow() 和currentColumn()。
void QTableWidget::setCurrentItem(QTableWidgetItem *item)
将当前项目设置为item 。
除非选择模式为NoSelection ,否则该项目也会被选中。
另请参阅 currentItem() 和setCurrentCell()。
void QTableWidget::setCurrentItem(QTableWidgetItem *item, QItemSelectionModel::SelectionFlags command)
使用给定的command 设置当前项目为item 。
另请参阅 currentItem() 和setCurrentCell() 。
void QTableWidget::setHorizontalHeaderItem(int column, QTableWidgetItem *item)
将column 列的水平标题项目设置为item 。如有必要,将增加列数以适应该项目。之前的页眉项(如果有的话)将被删除。
另请参阅 horizontalHeaderItem() 。
void QTableWidget::setHorizontalHeaderLabels(const QStringList &labels)
使用labels 设置水平标题标签。
void QTableWidget::setItem(int row, int column, QTableWidgetItem *item)
将给定的row 和column 的项目设置为item 。
表格将获得该项目的所有权。
请注意,如果启用了排序(参见sortingEnabled ),且column 是当前排序列,则row 将被移动到由item 确定的排序位置。
如果要对某一行中的多个项目进行设置(例如,在循环中调用 setItem()),可以先关闭排序,然后再打开;这样就可以对同一行中的所有项目使用相同的row 参数(即 setItem() 不会移动该行)。
void QTableWidget::setItemPrototype(const QTableWidgetItem *item)
将表格的项目原型设置为指定的item 。
当需要创建新的表格项目时,表格 widget 将使用项目原型克隆功能。例如,当用户在空单元格中进行编辑时。当您有一个QTableWidgetItem 子类,并希望确保QTableWidget 创建子类的实例时,这个功能非常有用。
表格拥有原型的所有权。
另请参阅 itemPrototype()。
void QTableWidget::setRangeSelected(const QTableWidgetSelectionRange &range, bool select)
根据select ,选择或取消选择range 。
void QTableWidget::setRowCount(int rows)
将此表模型中的行数设置为rows 。如果行数小于rowCount() ,不需要的行中的数据将被丢弃。
注: 属性rowCount 的设置函数。
另请参阅 rowCount() 和setColumnCount()。
void QTableWidget::setVerticalHeaderItem(int row, QTableWidgetItem *item)
将row 行的垂直标题项设置为item 。
另请参阅 verticalHeaderItem() 。
void QTableWidget::setVerticalHeaderLabels(const QStringList &labels)
使用labels 设置垂直标题标签。
void QTableWidget::sortItems(int column, Qt::SortOrder order = Qt::AscendingOrder)
根据column 和order 对表格 widget 中的所有行排序。
[virtual protected]
Qt::DropActions QTableWidget::supportedDropActions() const
返回此视图支持的下拉操作。
另请参阅 Qt::DropActions 。
QTableWidgetItem *QTableWidget::takeHorizontalHeaderItem(int column)
将column 处的横向页眉项从页眉中移除,但不删除。
QTableWidgetItem *QTableWidget::takeItem(int row, int column)
从表row 和column 中删除项目,但不删除该项目。
QTableWidgetItem *QTableWidget::takeVerticalHeaderItem(int row)
从页眉中删除row 处的垂直页眉项,但不删除它。
QTableWidgetItem *QTableWidget::verticalHeaderItem(int row) const
返回row 行的垂直标题项。
另请参阅 setVerticalHeaderItem() 。
int QTableWidget::visualColumn(int logicalColumn) const
返回给定logicalColumn 的视觉列。
QRect QTableWidget::visualItemRect(const QTableWidgetItem *item) const
返回位于item 的项目在视口中占据的矩形区域。
int QTableWidget::visualRow(int logicalRow) const
返回给定logicalRow 的视觉行。
© 2025 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.