QTableWidget类

QTableWidget类提供了一个基于项的表格视图,具有默认模型。更多...

头文件 #include <QTableWidget>
CMakefind_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmakeQT += widgets
继承 QTableView

属性

公共函数

QTableWidget(QWidget *parent = nullptr)
QTableWidget(int rows, int columns, QWidget *parent = nullptr)
virtual~QTableWidget()
QWidget *cellWidget(int row, int column) const
voidclosePersistentEditor(QTableWidgetItem *item)
intcolumn(const QTableWidgetItem *item) const
intcolumnCount() const
intcurrentColumn() const
QTableWidgetItem *currentItem() const
intcurrentRow() const
voideditItem(QTableWidgetItem *item)
QList<QTableWidgetItem *>findItems(const QString &text, Qt::MatchFlags flags) const
QTableWidgetItem *horizontalHeaderItem(int column) const
QModelIndexindexFromItem(const QTableWidgetItem *item) const
boolisPersistentEditorOpen(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
voidopenPersistentEditor(QTableWidgetItem *item)
voidremoveCellWidget(int row, int column)
introw(const QTableWidgetItem *item) const
introwCount() const
QList<QTableWidgetItem *>selectedItems() const
QList<QTableWidgetSelectionRange>selectedRanges() const
voidsetCellWidget(int row, int column, QWidget *widget)
voidsetColumnCount(int columns)
voidsetCurrentCell(int row, int column)
voidsetCurrentCell(int row, int column, QItemSelectionModel::SelectionFlags command)
voidsetCurrentItem(QTableWidgetItem *item)
voidsetCurrentItem(QTableWidgetItem *item, QItemSelectionModel::SelectionFlags command)
voidsetHorizontalHeaderItem(int column, QTableWidgetItem *item)
voidsetHorizontalHeaderLabels(const QStringList &labels)
voidsetItem(int row, int column, QTableWidgetItem *item)
voidsetItemPrototype(const QTableWidgetItem *item)
voidsetRangeSelected(const QTableWidgetSelectionRange &range, bool select)
voidsetRowCount(int rows)
voidsetVerticalHeaderItem(int row, QTableWidgetItem *item)
voidsetVerticalHeaderLabels(const QStringList &labels)
voidsortItems(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
intvisualColumn(int logicalColumn) const
QRectvisualItemRect(const QTableWidgetItem *item) const
intvisualRow(int logicalRow) const

公共槽函数

voidclear()
voidclearContents()
voidinsertColumn(int column)
voidinsertRow(int row)
voidremoveColumn(int column)
voidremoveRow(int row)
voidscrollToItem(const QTableWidgetItem *item, QAbstractItemView::ScrollHint hint = EnsureVisible)

信号

voidcellActivated(int row, int column)
voidcellChanged(int row, int column)
voidcellClicked(int row, int column)
voidcellDoubleClicked(int row, int column)
voidcellEntered(int row, int column)
voidcellPressed(int row, int column)
voidcurrentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn)
voidcurrentItemChanged(QTableWidgetItem *current, QTableWidgetItem *previous)
voiditemActivated(QTableWidgetItem *item)
voiditemChanged(QTableWidgetItem *item)
voiditemClicked(QTableWidgetItem *item)
voiditemDoubleClicked(QTableWidgetItem *item)
voiditemEntered(QTableWidgetItem *item)
voiditemPressed(QTableWidgetItem *item)
voiditemSelectionChanged()

受保护函数

virtual booldropMimeData(int row, int column, const QMimeData *data, Qt::DropAction action)
虚拟 QMimeData *mimeData(const QListitems) const
虚拟 QStringListmimeTypes() const
虚拟 Qt::DropActionssupportedDropActions() const

重实现保护函数

虚拟 voiddropEvent(QDropEvent *event) override
virtual boolevent(QEvent *e) override

详细描述

表格小部件为应用程序提供标准表格显示功能。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);

如果要在表格小部件中启用排序,请在一项元素填充完后再进行此操作,否则排序可能会干扰插入顺序(有关详细信息,请参阅setItem)。

表格可以同时具有水平和垂直表头。创建表头的最简单方法是将字符串列表提供给setHorizontalHeaderLabels()和setVerticalHeaderLabels()函数。这将为表格的列和行提供简单的文本表头。更复杂的表头可以由通常在表格外部构建的现有表格项目创建。例如,我们可以构建一个带有图标和对齐文本的表格项目,并将其用作特定列的表头

    QTableWidgetItem *cubesHeaderItem = new QTableWidgetItem(tr("Cubes"));
    cubesHeaderItem->setIcon(QIcon(QPixmap(":/Images/cubed.png")));
    cubesHeaderItem->setTextAlignment(Qt::AlignVCenter);

可以使用rowCount()找到表格中的行数,使用columnCount()找到列数。可以使用clear()函数清除表格。

请参阅QTableWidgetItemQTableView模型/视图编程

属性说明

columnCount : int

此属性存储表格中的列数

默认情况下,对于未指定行数和列数的表格,此属性包含的值为0。

访问函数

intcolumnCount() const
voidsetColumnCount(int columns)

rowCount : int

此属性存储表格中的行数

默认情况下,对于未指定行数和列数的表格,此属性包含的值为0。

访问函数

introwCount() const
voidsetRowCount(int rows)

成员函数说明

[ explicit ] QTableWidget::QTableWidget(QWidget *parent = nullptr)

使用指定的parent创建一个新的表格视图。

QTableWidget::QTableWidget(int rows, int columns, QWidget *parent = nullptr)

创建一个新的表视图,具有指定的 rowscolumns 行数和列数,以及给定的 parent 父对象。

[虚拟 nullptr] QTableWidget::~QTableWidget()

销毁此 QTableWidget 对象。

[信号] void QTableWidget::cellActivated(int row, int column)

当指定的单元格由 rowcolumn 激活时, emitting 这个信号。

[信号] void QTableWidget::cellChanged(int row, int column)

当指定的单元格由 rowcolumn 的项数据更改时,emitting 这个信号。

[信号] void QTableWidget::cellClicked(int row, int column)

在表格中单击单元格时,emitting 此信号。指定的 rowcolumn 是单击的单元格。

[信号] void QTableWidget::cellDoubleClicked(int row, int column)

当在表格中双击单元格时,emitting 此信号。指定的 rowcolumn 是被双击的单元格。

[信号] void QTableWidget::cellEntered(int row, int column)

当鼠标指针进入单元格时,emitting 此信号。单元格由 rowcolumn 指定。

仅当启用 mouseTracking 或在进入项时按下鼠标按钮时,才发出此信号。

[信号] void QTableWidget::cellPressed(int row, int column)

在表格中的单元格被按下时,emitting 此信号。指定的 rowcolumn 是被按下的单元格。

QWidget *QTableWidget::cellWidget(int row, int column) const

返回给定 rowcolumn 中显示的控件。

注意:表格将拥有该控件的所有权。

另请参阅:setCellWidget

[槽函数] void QTableWidget::clear()

从视图中删除所有项。这将删除所有选择和标题。如果您不想删除标题,请使用 QTableWidget::clearContents。表的尺寸保持不变。

[槽函数] void QTableWidget::clearContents()

从视图中移除所有不在标题中的项目。这也会移除所有选择。表的大小保持不变。

void QTableWidget::closePersistentEditor(QTableWidgetItem *item)

关闭对替换项 item 的持久编辑器。

另请参阅openPersistentEditor() 和 isPersistentEditorOpen

int QTableWidget::column(const QTableWidgetItem *item) const

返回 item 所在的列。

int QTableWidget::columnCount() const

返回列数。

注意:列数属性的获取函数。

另请参阅setColumnCount

[信号] void QTableWidget::currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn)

当前单元格更改时发出此信号。由 previousRowpreviousColumn 指定的单元格是之前具有焦点的单元格,由 currentRowcurrentColumn 指定的单元格是新的当前单元格。

int QTableWidget::currentColumn() const

返回当前项的列。

另请参阅currentRow() 和 setCurrentCell

QTableWidgetItem *QTableWidget::currentItem() const

返回当前项。

另请参阅setCurrentItem

[信号] void QTableWidget::currentItemChanged(QTableWidgetItem *current, QTableWidgetItem *previous)

当前项更改时发出此信号。由 previous 指定的项是之前具有焦点的项,current 是新的当前项。

int QTableWidget::currentRow() const

返回当前项的行。

另请参阅currentColumn() 和 setCurrentCell

[重写虚拟受保护的] void QTableWidget::dropEvent(QDropEvent *event)

重实现: QAbstractItemView::dropEvent(QDropEvent *event).

[虚拟受保护的] bool QTableWidget::dropMimeData(int row, int column, const QMimeData *data, Qt::DropAction action)

处理由拖放操作提供并由给定 action 结束的 data,在给定的 rowcolumn。如果可以由模型处理数据,则返回 true;否则返回 false

另请参阅supportedDropActions

void QTableWidget::editItem(QTableWidgetItem *item)

如果项目可编辑,则开始编辑item

[覆盖虚拟保护] 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

如果已设置给定rowcolumn的项目,则返回项目;否则返回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

返回表控件坐标系中与QPoint(ax, ay)位置等效的项,如果指定的点不在表控件的项覆盖范围内,则返回nullptr

参见 item().

[信号] void QTableWidget::itemChanged(QTableWidgetItem *item)

每次item的数据发生变化时,都会发出此信号。

[信号] void QTableWidget::itemClicked(QTableWidgetItem *item)

每当在表中单击一个项时,都会发出此信号。指定的item是单击的项。

[信号] void QTableWidget::itemDoubleClicked(QTableWidgetItem *item)

每当在表中双击一个项时,都会发出此信号。指定的item是双击的项。

[信号] void QTableWidget::itemEntered(QTableWidgetItem *item)

当鼠标光标进入一个项时,发出此信号。所进入的item是所进入的项。

仅当启用 mouseTracking 或在进入项时按下鼠标按钮时,才发出此信号。

QTableWidgetItem *QTableWidget::itemFromIndex(const QModelIndex &index) const

返回与给定index关联的QTableWidgetItem指针。

[信号] void QTableWidget::itemPressed(QTableWidgetItem *item)

每当在表中按下项时,都会发出此信号。指定的<и translate="no">item是被按下的项。

const QTableWidgetItem *QTableWidget::itemPrototype() const

返回表使用的项原型。

参见 setItemPrototype().

[信号] void QTableWidget::itemSelectionChanged()

每当选择发生变化时,都会发出此信号。

参见 selectedItems()和QTableWidgetItem::isSelected().

QList<QTableWidgetItem *> QTableWidget::items(const QMimeData *data) const

返回包含在data对象中的项的指针列表。如果该对象不是由同一进程中的QTreeWidget创建的,则列表为空。

[虚拟受保护] QMimeData *QTableWidget::mimeData(const QList<QTableWidgetItem *> &items) const

返回一个对象,其中包含指定 items 的序列化描述。描述项的格式从 mimeTypes() 函数获取。

如果项目列表为空,则返回 nullptr 而不是序列化的空列表。

[虚拟受保护] QStringList QTableWidget::mimeTypes() const

返回可以使用来描述一系列 tablewidget 项目的 MIME 类型列表。

另请参阅mimeData

void QTableWidget::openPersistentEditor(QTableWidgetItem *item)

打开给定 item 的编辑器。编辑后编辑器保持打开状态。

另请参阅closePersistentEditor() 和 isPersistentEditorOpen

void QTableWidget::removeCellWidget(int row, int column)

移除由 rowcolumn 指定的单元格上的小部件。

[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设置为在指定的rowcolumn的单元格中显示,并将widget的所有权传递给表。

如果在单元格widget A被替换为单元格widget B,单元格widget A将被删除。例如,在下面的代码片段中,QLineEdit对象将被删除。

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

另请参阅cellWidget

void QTableWidget::setColumnCount(int columns)

将此表的模型中的列数设置为columns。如果这小于columnCount(),则删除不需要的列中的数据。

注意:属性columnCount的设置器函数。

另请参阅columnCount()和setRowCount

void QTableWidget::setCurrentCell(int row, int column)

将当前单元格设置为位置(row, column)的单元格。

根据当前的选择模式,该单元格也可能被选中。

另请参阅setCurrentItem()、currentRowcurrentColumn

void QTableWidget::setCurrentCell(int row, int column, QItemSelectionModel::SelectionFlags command)

使用给定的command将当前单元格设置为位置(row, column)的单元格。

另请参阅setCurrentItem()、currentRowcurrentColumn

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)

设置列 的水平表头项为 。如需则增加列数以适应项。删除之前的表头项(如果有的话)。

另请参阅 horizontalHeaderItem

void QTableWidget::setHorizontalHeaderLabels(const QStringList &labels)

使用 labels 设置水平表头标签。

void QTableWidget::setItem(int row, int column, QTableWidgetItem *item)

为给定的 设置

表格将拥有项的所有权。

注意,如果启用了排序(见 sortingEnabled)且 是当前排序列,则 将移动到由 确定的排序位置。

如果您想为特定行设置多个项(例如,通过循环调用 setItem()),您可能希望在这样做之前关闭排序,然后再重新启动;这将允许您为同一行的所有项使用相同的 参数(即 setItem() 不会移动行)。

另请参阅 item() 和 takeItem

void QTableWidget::setItemPrototype(const QTableWidgetItem *item)

将表格的项原型设置为指定的

表格小部件将在需要创建新的表格项时使用项原型克隆函数。例如,当用户在空单元格中编辑时。这对于您有一个 QTableWidgetItem 子类并想要确保 QTableWidget 创建您子类实例时很有用。

表格将拥有原型的所有权。

另请参阅 itemPrototype

void QTableWidget::setRangeSelected(const QTableWidgetSelectionRange &range, bool select)

根据 select 选择或取消选择 范围

void QTableWidget::setRowCount(int rows)

将此表格模型的行数设置为 rows。如果小于 rowCount(),则丢弃不要的行中的数据。

注意: 属性 rowCount 的设置函数。

另请参阅 rowCount() 和 setColumnCount

void QTableWidget::setVerticalHeaderItem(int row, QTableWidgetItem *item)

将行 的垂直表头项设置为

另请参阅 verticalHeaderItem

void QTableWidget::setVerticalHeaderLabels(const QStringList &labels)

使用 labels 设置垂直标题。

void QTableWidget::sortItems(int column, Qt::SortOrder order = Qt::AscendingOrder)

根据 columnorder 对表格中的所有行进行排序。

[虚拟受保护] Qt::DropActions QTableWidget::supportedDropActions() const

返回此视图支持的拖放操作。

另请参阅 Qt::DropActions.

QTableWidgetItem *QTableWidget::takeHorizontalHeaderItem(int column)

从标题中删除 column 处的水平标题项,但不删除它。

QTableWidgetItem *QTableWidget::takeItem(int row, int column)

从表格中删除 rowcolumn 处的项,但不删除它。

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 的可视行。

© 2024 The Qt Company Ltd. 此处包含的文档贡献的版权属于各自的业主。此处提供的文档是根据自由软件基金会发布的 GNU自由文档许可协议版本1.3 许可的。Qt和相应的标志是The Qt Company Ltd.在芬兰以及世界其他国家的商标。所有其他商标均为各自业主的财产。