1.最简单的表格示例:
ui->tableWidget->setRowCount(2);// 设置行数ui->tableWidget->setColumnCount(3);// 设置列数,一定要放在设置行表头之前QStringList rowHeaderList;// 行表头rowHeaderList << QStringLiteral("姓名");rowHeaderList << QStringLiteral("性别");rowHeaderList << QStringLiteral("年龄");ui->tableWidget->setHorizontalHeaderLabels(rowHeaderList);// 设置行表头// 通常不设置列表头,默认会显示行号,以下是列表头的设置
// QStringList columnHeaderList = {QStringLiteral("1"),QStringLiteral("2")}; // 列表头
// ui->tableWidget->setVerticalHeaderLabels(columnHeaderList);// 设置列表头
// ui->tableWidget->verticalHeader()->setVisible(false);// 设置列表头不可见
结果:
2.设置行表头将表格行填充满:
// Interactive:用户可拖动改变列宽(默认);Fixed:固定列宽;Stretch:拉伸自适应列宽;ResizeToContents:根据内容设置列宽ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);// 设置整体表头拉伸自适应列宽
结果:
3.设置行数(插入行数据时使用):
ui->tableWidget_->setRowCount(3);// 设置表格为 3 行
结果:
4.获取表格总行数:
int total_row_count = ui->tableWidget_->rowCount();// 表格总行数
5.给单元格设置数据:
// 给单元格设置数据,行数从 0 开始,(row,column)确定一个单元格ui->tableWidget_->setItem(row,column,new QTableWidgetItem(QStringLiteral("数据")));
6.默认单元格中的数据是靠左对齐的,如下设置单元格的数据居中对齐:
QTableWidgetItem* username_item = new QTableWidgetItem(username);username_item->setTextAlignment(Qt::AlignCenter);// 设置单元格的数据居中对齐
7.设置表格行交替显示背景色:
方式1,可以在设计界面上直接设置:
方式2,使用代码设置:
ui->tableWidget_->setAlternatingRowColors(true);
结果:
8.显示和隐藏垂直表头、水平表头:
ui->tableWidget_->verticalHeader()->show();// 显示垂直表头
ui->tableWidget_->verticalHeader()->hide();ui->tableWidget_->horizontalHeader()->show();// 显示水平表头
ui->tableWidget_->horizontalHeader()->hide();
9.设置表格中的单元格是否可编辑:
// 可编辑ui->tableWidget_->setEditTriggers(QAbstractItemView::DoubleClicked |QAbstractItemView::SelectedClicked |QAbstractItemView::EditKeyPressed);// 不可编辑ui->tableWidget_->setEditTriggers(QAbstractItemView::NoEditTriggers);
10.设置点击单元格时是单元格选中还是行选中:
// 单元格选中
ui->tableWidget_->setSelectionBehavior(QAbstractItemView::SelectItems);
// 行选中
ui->tableWidget_->setSelectionBehavior(QAbstractItemView::SelectRows);
结果1,单元格选中:
结果2,行选中:
11.表格信号:
void QTableWidget::itemClicked(QTableWidgetItem *item);// 点击单元格后可以获得单元格的内容(item)
实例:
// 下面的槽函数使用itemClicked(QTableWidgetItem *item)信号传过来的itemvoid TestTableWidget::ItemClicked(QTableWidgetItem *item){int row = item->row();// 获取当前点击的单元格的行QString username = ui->tableWidget_->item(row,0)->text();// 获取单元格的内容QString gender = ui->tableWidget_->item(row,1)->text();QString age = ui->tableWidget_->item(row,2)->text();}
12.获取当前选中行并在当前行位置插入空行(插入行数据时使用):
int current_row_index = ui->tableWidget_->currentRow();// 获取当前选中行ui->tableWidget_->insertRow(current_row_index);// 在当前行位置插入空行
13.删除当前选中行:
int current_row_index = ui->tableWidget_->currentRow();// 获取当前选中行ui->tableWidget_->removeRow(current_row_index);// 删除当前选中行
14.修改单元格数据:
ui->tableWidget_->item(1,0)->setText(username);// 修改第1行第0列的单元格数据