Header:#include < QTableWidget >
qmake:QT += widgets
Inherits:QTableView
Properties
columnCount : int
rowCount : int
Public Functions
QTableWidget(int rows, int columns, QWidget *parent = nullptr)
QTableWidget(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
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
const QTableWidgetItem *itemPrototype() 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
Public Slots
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)
Signals
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()
Protected Functions
virtual bool dropMimeData(int row, int column, const QMimeData *data, Qt::DropAction action)
QModelIndex indexFromItem(const QTableWidgetItem *item) const
QTableWidgetItem *itemFromIndex(const QModelIndex &index) const
QList<QTableWidgetItem *> items(const QMimeData *data) const
virtual QMimeData *mimeData(const QList<QTableWidgetItem *> items) const
virtual QStringList mimeTypes() const
virtual Qt::DropActions supportedDropActions() const
Reimplemented Protected Functions
virtual void dropEvent(QDropEvent *event) override
virtual bool event(QEvent *e) override
Detailed Description
Table widgets为应用程序提供标准的 table 显示工具。QTableWidget中的项由QTableWidgetItem提供。
如果你想要一个使用你自己的数据模型的表,你应该使用QTableView而不是这个类。
Table widgets可以用所需的行数和列数来构造:
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);
如果希望在table widget中启用排序,请在向table widget中填充了项目之后启用排序,否则排序可能会干扰插入顺序(有关详细信息,请参阅setItem())。
Tables可以被赋予水平和垂直标题。创建标头的最简单方法是向setHorizontalHeaderLabels()和setVerticalHeaderLabels()函数提供一个字符串列表。这将为表的列和行提供简单的文本标题。可以从通常在Tables外部构造的现有表项创建更复杂的头。例如,我们可以构造一个带有图标和对齐文本的表项,并将其用作特定列的标题:
QTableWidgetItem *cubesHeaderItem = new QTableWidgetItem(tr("Cubes"));
cubesHeaderItem->setIcon(QIcon(QPixmap(":/Images/cubed.png")));
cubesHeaderItem->setTextAlignment(Qt::AlignVCenter);
可以使用rowCount()找到表中的行数,使用columnCount()找到列数。可以使用clear()函数清除表。
See also QTableWidgetItem, QTableView, and Model/View Programming.
Property Documentation
columnCount : int
此属性保存表中的列数
默认情况下,对于没有行和列计数构造的表,此属性的值为0。
访问函数:
int columnCount() const
void setColumnCount(int columns)
rowCount : int
此属性保存表中的行数
默认情况下,对于没有行和列计数构造的表,此属性的值为0。
访问函数:
int rowCount() const
void setRowCount(int rows)
Member Function Documentation
QTableWidget::QTableWidget(int rows, int columns, QWidget *parent = nullptr)
Creates a new table view with the given rows and columns, and with the given parent.
QTableWidget::QTableWidget(QWidget *parent = nullptr)
Creates a new table view with the given parent.
[signal] void QTableWidget::cellActivated(int row, int column)
当按行和列指定的单元格被激活时,发出此信号。
This function was introduced in Qt 4.1.
[signal] void QTableWidget::cellChanged(int row, int column)
每当由行和列指定的单元格中的项的数据发生变化时,就会发出此信号。
This function was introduced in Qt 4.1.
[signal] void QTableWidget::cellClicked(int row, int column)
每当单击表中的单元格时,就会发出此信号。指定的行和列是单击的单元格。
This function was introduced in Qt 4.1.
[signal] void QTableWidget::cellDoubleClicked(int row, int column)
每当双击表中的单元格时,就会发出此信号。指定的行和列是双击的单元格。
This function was introduced in Qt 4.1.
[signal] void QTableWidget::cellEntered(int row, int column)
该信号在鼠标光标进入单元格时发出。单元格由行和列指定。
该信号仅在打开mouseTracking或在移动到一个项目时按下鼠标按钮时发出。
This function was introduced in Qt 4.1.
[signal] void QTableWidget::cellPressed(int row, int column)
每当表中的单元格被按下时,就会发出这个信号。指定的行和列是按下的单元格。
This function was introduced in Qt 4.1.
[slot] void QTableWidget::clear()
删除视图中的所有项。这也将删除所有的选择和标题。
如果不想删除标题,请使用QTableWidget::clearContents()。表的尺寸保持不变。
[slot] void QTableWidget::clearContents()
从视图中删除标题之外的所有项。这也将删除所有选择。表的尺寸保持不变。
This function was introduced in Qt 4.2.
[signal] void QTableWidget::currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn)
只要当前Cell发生变化,就会发出这个信号。由previousRow和previousColumn指定的单元格是以前具有焦点的单元格,
由currentRow和currentColumn指定的单元格是新的当前单元格。
This function was introduced in Qt 4.1.
[signal] void QTableWidget::currentItemChanged(QTableWidgetItem *current, QTableWidgetItem *previous)
只要当前项发生变化,就会发出这个信号。previous项是先前具有焦点的项,current是新的当前项。
[slot] void QTableWidget::insertColumn(int column)
在列处的表中插入空列。
[slot] void QTableWidget::insertRow(int row)
将空行插入表的第一行。
[signal] void QTableWidget::itemActivated(QTableWidgetItem *item)
当指定的QTableWidgetItem被激活时,会发出这个信号
[signal] void QTableWidget::itemChanged(QTableWidgetItem *item)
每当QTableWidgetItem的数据发生变化时,就会发出这个信号。
[signal] void QTableWidget::itemClicked(QTableWidgetItem *item)
每当单击表中的项时,就会发出此信号。指定的项是单击的项。
[signal] void QTableWidget::itemDoubleClicked(QTableWidgetItem *item)
每当双击表中的一个项时,就会发出这个信号。指定的项是双击的项。
[signal] void QTableWidget::itemEntered(QTableWidgetItem *item)
当鼠标光标进入一个项目时发出这个信号。项目就是输入的项目。
该信号仅在打开mouseTracking或在移动到一个项目时按下鼠标按钮时发出。
[signal] void QTableWidget::itemPressed(QTableWidgetItem *item)
只要按下表中的一个项,就会发出这个信号。指定的项是按下的项。
[signal] void QTableWidget::itemSelectionChanged()
每当选择发生变化时,就会发出该信号。
See also selectedItems() and QTableWidgetItem::isSelected().
[slot] void QTableWidget::removeColumn(int column)
从表中删除列column及其所有项。
[slot] void QTableWidget::removeRow(int row)
从表中删除行row及其所有项。
[slot] void QTableWidget::scrollToItem(const QTableWidgetItem *item, QAbstractItemView::ScrollHint hint = EnsureVisible)
必要时滚动视图以确保项目可见。hint参数更精确地指定操作后项应该位于的位置。
[virtual] QTableWidget::~QTableWidget()
Destroys this QTableWidget.
QWidget *QTableWidget::cellWidget(int row, int column) const
返回在给定行和列的单元格中显示的小部件。
注意:表拥有小部件的所有权。
This function was introduced in Qt 4.1.
See also setCellWidget().
void QTableWidget::closePersistentEditor(QTableWidgetItem *item)
关闭item的持久编辑器。
See also openPersistentEditor() and isPersistentEditorOpen().
int QTableWidget::column(const QTableWidgetItem *item) const
返回该项的列。
int QTableWidget::columnCount() const
返回列数。
注意:属性columnCount的Getter函数。
See also setColumnCount().
int QTableWidget::currentColumn() const
返回当前项的列。
See also currentRow() and setCurrentCell().
QTableWidgetItem *QTableWidget::currentItem() const
返回当前项。
See also setCurrentItem().
int QTableWidget::currentRow() const
返回当前项的行。
See also currentColumn() and setCurrentCell().
[override virtual protected] void QTableWidget::dropEvent(QDropEvent *event)
Reimplements: QAbstractItemView::dropEvent(QDropEvent *event).
[virtual protected] bool QTableWidget::dropMimeData(int row, int column, const QMimeData *data, Qt::DropAction action)
处理由拖放操作提供的数据,该操作以给定行和列中的给定操作结束。如果数据和动作可以被模型处理,则返回true;否则返回false。
See also supportedDropActions().
void QTableWidget::editItem(QTableWidgetItem *item)
如果项目可编辑,则开始编辑该项目。
[override virtual protected] bool QTableWidget::event(QEvent *e)
Reimplements: QAbstractItemView::event(QEvent *event).
QList<QTableWidgetItem *> QTableWidget::findItems(const QString &text, Qt::MatchFlags flags) const
使用给定标志查找与文本匹配的项。
QTableWidgetItem *QTableWidget::horizontalHeaderItem(int column) const
返回column, column(如果已设置)的水平标头项;否则返回nullptr。
See also setHorizontalHeaderItem().
[protected] QModelIndex QTableWidget::indexFromItem(const QTableWidgetItem *item) const
返回与给定项关联的QModelIndex。
注意:在5.10之前的Qt版本中,这个函数接受一个非const项。
bool QTableWidget::isPersistentEditorOpen(QTableWidgetItem *item) const
返回持久编辑器是否为item打开。
This function was introduced in Qt 5.10.
See also openPersistentEditor() and closePersistentEditor().
QTableWidgetItem *QTableWidget::item(int row, int column) const
如果已设置,则返回给定行和列的项;否则返回nullptr。
See also setItem().
QTableWidgetItem *QTableWidget::itemAt(const QPoint &point) const
返回一个指向给定点上的项的指针,如果点没有被表widget中的项覆盖,则返回nullptr。
See also item().
QTableWidgetItem *QTableWidget::itemAt(int ax, int ay) const
返回与表小部件坐标系中的QPoint(ax, ay)位置相等的项,
或者如果指定的点未被表小部件中的项覆盖,则返回nullptr。
See also item().
[protected] QTableWidgetItem *QTableWidget::itemFromIndex(const QModelIndex &index) const
返回一个指向与给定索引关联的QTableWidgetItem的指针。
const QTableWidgetItem *QTableWidget::itemPrototype() const
返回表使用的项原型。
See also setItemPrototype().
[protected] QList<QTableWidgetItem *> QTableWidget::items(const QMimeData *data) const
返回指向数据对象中包含的项的指针列表。如果对象不是由同一个进程中的QTreeWidget创建的,则列表为空。
[virtual protected] QMimeData *QTableWidget::mimeData(const QList<QTableWidgetItem *> items) const
返回一个对象,该对象包含指定项的序列化描述。用于描述项的格式是从mimeTypes()函数获得的。
如果项列表为空,则返回nullptr而不是序列化的空列表。
[virtual protected] QStringList QTableWidget::mimeTypes() const
返回可用于描述tablewidget项列表的MIME类型列表。
See also mimeData().
void QTableWidget::openPersistentEditor(QTableWidgetItem *item)
打开给定项的编辑器。编辑器在编辑后保持打开状态。
See also closePersistentEditor() and isPersistentEditorOpen().
void QTableWidget::removeCellWidget(int row, int column)
删除按行和列指示的单元格上的小部件集。
这个函数是在Qt 4.3中引入的。
int QTableWidget::row(const QTableWidgetItem *item) const
返回该项的行。
int QTableWidget::rowCount() const
返回行数。
注意:属性rowCount的Getter函数。
See also setRowCount().
QList<QTableWidgetItem *> QTableWidget::selectedItems() const
返回所有选定项的列表。
这个函数返回一个指向所选单元格内容的指针列表。使用selectedinindexes()函数检索完整的选择,包括空单元格。
See also selectedIndexes().
QList<QTableWidgetSelectionRange> QTableWidget::selectedRanges() const
返回所有选定范围的列表。
See also QTableWidgetSelectionRange.
void QTableWidget::setCellWidget(int row, int column, QWidget *widget)
将给定小部件设置为显示在给定行和列的单元格中,将小部件的所有权传递给表。
如果单元格小部件A被单元格小部件B替换,则单元格小部件A将被删除。例如,在下面的代码片段中,QLineEdit对象将被删除。
setCellWidget(row, column, new QLineEdit);
...
setCellWidget(row, column, new QTextEdit);
This function was introduced in Qt 4.1.
See also cellWidget().
void QTableWidget::setColumnCount(int columns)
将此表模型中的列数设置为列。如果该值小于columnCount(),则丢弃不需要的列中的数据。
注意:属性columnCount的Setter函数。
See also columnCount() and setRowCount().
void QTableWidget::setCurrentCell(int row, int column)
将当前单元格设置为位置(行、列)上的单元格。
根据当前的选择模式,单元格也可能被选中。
This function was introduced in Qt 4.1.
See also setCurrentItem(), currentRow(), and currentColumn().
void QTableWidget::setCurrentCell(int row, int column, QItemSelectionModel::SelectionFlags command)
使用给定命令将当前单元格设置为位置(行、列)处的单元格。
This function was introduced in Qt 4.4.
See also setCurrentItem(), currentRow(), and currentColumn().
void QTableWidget::setCurrentItem(QTableWidgetItem *item)
将当前项设置为item。
除非选择模式为NoSelection,否则项目也会被选中。
See also currentItem() and setCurrentCell().
void QTableWidget::setCurrentItem(QTableWidgetItem *item, QItemSelectionModel::SelectionFlags command)
使用给定的命令将当前项设置为item。
This function was introduced in Qt 4.4.
See also currentItem() and setCurrentCell().
void QTableWidget::setHorizontalHeaderItem(int column, QTableWidgetItem *item)
设置列的水平标头项。如有必要,将增加列数以适应该项。删除前一个头项(如果有)。
See also horizontalHeaderItem().
void QTableWidget::setHorizontalHeaderLabels(const QStringList &labels)
使用标签设置水平页眉标签。
void QTableWidget::setItem(int row, int column, QTableWidgetItem *item)
将给定行和列的项设置为item。
表获得项的所有权。
注意,如果启用了排序(请参阅sortingEnabled)并且column是当前排序列,则该行将被移动到由item确定的排序位置。
如果你想设置特定行的几个项(比如,通过在循环中调用setItem()),你可能想在这样做之前关闭排序,然后再打开它;这将允许您对同一行中的所有项使用相同的row参数(即setItem()不会移动该行)。
See also item() and takeItem().
void QTableWidget::setItemPrototype(const QTableWidgetItem *item)
将表的项原型设置为指定的项。
当表小部件需要创建一个新的表项时,它将使用项原型克隆函数。例如,当用户在空单元格中进行编辑时。当你有一个QTableWidgetItem子类并且想要确保QTableWidget创建你的子类的实例时,这是很有用的。
表格拥有原型的所有权。
See also itemPrototype().
void QTableWidget::setRangeSelected(const QTableWidgetSelectionRange &range, bool select)
根据选择选择选择或取消选择范围。
void QTableWidget::setRowCount(int rows)
将此表模型中的行数设置为行。如果该值小于rowCount(),则丢弃不需要的行中的数据。
注:属性rowCount的设置函数。
See also rowCount() and setColumnCount().
void QTableWidget::setVerticalHeaderItem(int row, QTableWidgetItem *item)
Sets the vertical header item for row row to item.
See also verticalHeaderItem().
void QTableWidget::setVerticalHeaderLabels(const QStringList &labels)
使用标签设置垂直标头标签。
void QTableWidget::sortItems(int column, Qt::SortOrder order = Qt::AscendingOrder)
根据列和顺序对表小部件中的所有行进行排序。
[virtual protected] Qt::DropActions QTableWidget::supportedDropActions() const
返回此视图支持的拖放操作。
See also Qt::DropActions.
QTableWidgetItem *QTableWidget::takeHorizontalHeaderItem(int column)
从标题中移除列处的水平标题项,但不删除它。
This function was introduced in Qt 4.1.
QTableWidgetItem *QTableWidget::takeItem(int row, int column)
从表中删除行和列处的项,但不删除它。
QTableWidgetItem *QTableWidget::takeVerticalHeaderItem
从标题中删除第一行处的垂直标题项,但不删除它。
This function was introduced in Qt 4.1.
QTableWidgetItem *QTableWidget::verticalHeaderItem(int row) const
Returns the vertical header item for row row.
See also setVerticalHeaderItem().
int QTableWidget::visualColumn(int logicalColumn) const
返回给定logicalColumn的可视列。
QRect QTableWidget::visualItemRect(const QTableWidgetItem *item) const
返回item处的项所占用的视窗上的矩形。
int QTableWidget::visualRow(int logicalRow) const
返回给定logicalRow的可视行。