Qt入门系列开发教程高级控件篇QTableWidget表格小部件
Posted 鱼酱2333
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt入门系列开发教程高级控件篇QTableWidget表格小部件相关的知识,希望对你有一定的参考价值。
效果图
描述
表格小部件为应用程序提供标准表格显示设施。 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() 函数清除表。
Cell:由多个单元格组成
item:一个单元格
属性
- columnCount : int 列数
- rowCount : int 行数
公有方法
返回在给定行和列的单元格中显示的小部件。
QWidget *cellWidget(int row, int column) const
关闭项目的持久编辑器。
void closePersistentEditor(QTableWidgetItem *item)
item的列号
int column(const QTableWidgetItem *item) const
列数
int columnCount() const
当前列
int currentColumn() const
当前item
QTableWidgetItem *currentItem() const
当前行
int currentRow() const
如果项目可编辑,则开始编辑项目。
void editItem(QTableWidgetItem *item)
使用给定标志查找与文本匹配的项目。
QList<QTableWidgetItem *> findItems(const QString &text, Qt::MatchFlags flags) const
如果已设置,则返回列、列的水平标题项; 否则返回 nullptr。
QTableWidgetItem *horizontalHeaderItem(int column) const
返回与给定项目关联的 QModelIndex。
QModelIndex indexFromItem(const QTableWidgetItem *item) const
返回是否为项目 item 打开持久编辑器。
bool isPersistentEditorOpen(QTableWidgetItem *item) const
获取item
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
选择item们
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)
将表的项原型设置为指定项。
当需要创建新的表项时,表小部件将使用项原型克隆功能。 例如,当用户在空单元格中进行编辑时。 当您有一个 QTableWidgetItem 子类并希望确保 QTableWidget 创建您的子类的实例时,这很有用。
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
返回视口上由 item 处的项目占用的矩形。
QRect visualItemRect(const QTableWidgetItem *item) const
返回给定logicalRow 的可视行。
int visualRow(int logicalRow) const
公有槽函数
删除视图中的所有项目。
void clear()
从视图中删除所有不在标题中的项目。
void clearContents()
在 column 处向表中插入一个空列。
void insertColumn(int column)
在 row处向表中插入一个空行。
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)
每当当前单元格发生变化时,都会发出此信号。 previousRow 和 previousColumn 指定的单元格是先前具有焦点的单元格,currentRow 和 currentColumn 指定的单元格是新的当前单元格。
void currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn)
每当当前项目更改时,都会发出此信号。 上一个项目是先前具有焦点的项目,当前是新的当前项目。
void currentItemChanged(QTableWidgetItem *current, QTableWidgetItem *previous)
当指定项目被激活时发出此信号
void itemActivated(QTableWidgetItem *item)
每当 item 的数据发生更改时,都会发出此信号。
void itemChanged(QTableWidgetItem *item)
每当单击表中的项目时都会发出此信号。 指定的项目是被单击的项目。
void itemClicked(QTableWidgetItem *item)
每当双击表中的项目时都会发出此信号。 指定的项目是被单击的项目。
void itemDoubleClicked(QTableWidgetItem *item)
当鼠标光标进入项目时发出此信号。 项目是输入的项目。
void itemEntered(QTableWidgetItem *item)
每当按下表格中的项目时,都会发出此信号。 指定的项目是被按下的项目。
void itemPressed(QTableWidgetItem *item)
每当当前项目更改时选择变化。
void itemSelectionChanged()
以上是关于Qt入门系列开发教程高级控件篇QTableWidget表格小部件的主要内容,如果未能解决你的问题,请参考以下文章
Qt入门系列开发教程高级控件篇QTreeWidget树形小部件
Qt入门系列开发教程高级控件篇QTableWidget表格小部件