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);
查看行数和列数:
int QTableWidget::columnCount()//查看列数
int QTableWidget::rowCount()//查看行数
void QTableWidget::setRowCount(int rows)//设置行数
void QTableWidget::setColumnCount(int columns)//设置列数
创建表头:
void QTableWidget::setHorizontalHeaderLabels(const QStringList &labels)//水平表头
void QTableWidget::setVerticalHeaderLabels(const QStringList &labels)//垂直表头
信号:
void QTableWidget::cellActivated(int row, int column)//指定单元格被激活
void QTableWidget::cellChanged(int row, int column)//指定单元格中数据发生改变
void QTableWidget::cellClicked(int row, int column)//指定单元格被单击
void QTableWidget::cellDoubleClicked(int row, int column)//指定单元格被双击
void QTableWidget::cellEntered(int row, int column)//鼠标光标移动到指定单元格(需打开鼠标跟踪)或指定单元格被点击
void QTableWidget::cellPressed(int row, int column)//指定单元格被按下(包括键盘Enter)
void QTableWidget::currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn)//当前单元格发生改变
void QTableWidget::currentItemChanged(QTableWidgetItem *current, QTableWidgetItem *previous)//当前项目发生变化
void QTableWidget::insertColumn(int column)//指定位置插入空列
void QTableWidget::insertRow(int row)//指定位置插入空行
void QTableWidget::itemActivated(QTableWidgetItem *item)//指定项目被激活
void QTableWidget::itemChanged(QTableWidgetItem *item)//指定项目被改变
void QTableWidget::itemClicked(QTableWidgetItem *item)//指定项目被点击
void QTableWidget::itemDoubleClicked(QTableWidgetItem *item)//指定项目被双击
void QTableWidget::itemEntered(QTableWidgetItem *item)//光标进入指定项目
void QTableWidget::itemPressed(QTableWidgetItem *item)//指定项目被按下
void QTableWidget::itemSelectionChanged()//选择发生改变
槽:
void QTableWidget::clear()//清空表格所有内容(包括表头),表格大小不变
void QTableWidget::clearContents()//清空表格所有内容(不包括表头),表格大小不变
void QTableWidget::removeColumn(int column)//删除指定列(会改变表格大小)
void QTableWidget::removeRow(int row)//删除指定行(会改变表格大小)
void QTableWidget::scrollToItem(const QTableWidgetItem *item, QAbstractItemView::ScrollHint hint = EnsureVisible)//移动视野使指定项目可见
其他函数:
void QTableWidget::closePersistentEditor(QTableWidgetItem *item)//关闭持久编辑某一项
int QTableWidget::column(const QTableWidgetItem *item)//返回某一项目所在列
int QTableWidget::currentColumn()//返回当前列
QTableWidgetItem *QTableWidget::currentItem() //返回当前项目
int QTableWidget::currentRow()//返回当前行
void QTableWidget::editItem(QTableWidgetItem *item)//如果该项目可编辑则开始编辑
QList<QTableWidgetItem *> QTableWidget::findItems(const QString &text, Qt::MatchFlags flags)//按指定标志查找元素
其中flags取值如下:
Constant | Value | Description |
---|---|---|
Qt::MatchExactly | 0 | 执行基于QVariant的匹配 |
Qt::MatchFixedString | 8 | 执行基于字符串的匹配。除非同时指定MatchCaseSensitive标志,否则基于字符串的比较不区分大小写。 |
Qt::MatchContains | 1 | 搜索词包含在项目中。 |
Qt::MatchStartsWith | 2 | 搜索词包含在项目开头 |
Qt::MatchEndsWith | 3 | 搜索词包含在项目结尾 |
Qt::MatchCaseSensitive | 16 | 搜索词区分大小写 |
Qt::MatchRegExp | 4 | 使用正则表达式作为搜索项执行基于字符串的匹配,使用QRegExp类。(此项在Qt5.15后不推荐使用) |
Qt::MatchRegularExpression | 9 | 使用正则表达式作为搜索项执行基于字符串的匹配,使用QRegularExpression类。使用此标志时,可以将QRegularExpression对象作为参数传递,并将直接用于执行搜索。区分大小写标志将被忽略,因为QRegularExpression对象预计将被完全配置。 |
Qt::MatchWildcard | 5 | 使用带有通配符的字符串作为搜索词,执行基于字符串的匹配。 |
Qt::MatchWrap | 32 | 执行循环搜索,当搜索完模型中的最后一个项目时,从第一个项目开始,直到所有项目都搜索完毕。 |
Qt::MatchRecursive | 64 | 搜索整个层次结构。 |
注意:Qt::MatchExactly, Qt::MatchContains, Qt::MatchStartsWith, Qt::MatchEndsWith, Qt::MatchRegularExpression, Qt::MatchWildcard, 和 Qt::MatchFixedString是互斥的
QTableWidgetItem *QTableWidget::horizontalHeaderItem(int column)//返回指定列的水平表头,如果不存在返回空指针
bool QTableWidget::isPersistentEditorOpen(QTableWidgetItem *item) //返回某项持久编辑是否打开
QTableWidgetItem *QTableWidget::item(int row, int column)//返回指定单元格的内容