0 常用设置
//table setting //设置表头 QStringList header; header<< "ID" << "Info1"<<"info2" << "info3"; ui->tableWidget_1->setHorizontalHeaderLabels(header); //整行选中的方式 ui->tableWidget_1->setSelectionBehavior(QAbstractItemView::SelectRows); //禁止修改 ui->tableWidget_1->setEditTriggers(QAbstractItemView::NoEditTriggers); //显示列表头 ui->tableWidget_1->verticalHeader()->setVisible(true); //开启自动滚动 ui->tableWidget_1->setAutoScroll(true); // end table setting
1 添加表头内容
QStringList header;
header<<""<<tr("1")<<tr("2")<<tr("3")<<tr("4)<<tr("5");
tableWidget->setHorizontalHeaderLabels(header);
2 设置表格:整行选择
tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
其他参数:
QAbstractItemView.SelectItems 选中单个单元格
QAbstractItemView.SelectRows 选中一行
QAbstractItemView.SelectColumns 选中一列
3 设置表格编辑方式
tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
其他参数:
QAbstractItemView.NoEditTriggers 不对表格内容进行修改
QAbstractItemView.CurrentChanged 任何时候都能对单元格修改
QAbstractItemView.DoubleClicked 双击单元格
QAbstractItemView.SelectedClicked 单击已选中的内容
QAbstractItemView.EditKeyPressed 按下编辑键后编辑
QAbstractItemView.AnyKeyPressed 按下任意键就能编辑
QAbstractItemView.AllEditTriggers 以上条件全包括
4 设置单元格字体颜色、背景颜色和字体字符
QTableWidgetItem *item = new QTableWidgetItem("ID");
item->setBackgroundColor(QColor(0,60,10));
item->setTextColor(QColor(200,111,100));
item->setFont(QFont("Helvetica"));
tableWidget->setItem(0,1,item);
5 设置单元格的大小
//通过指定某个行或者列的大小
tableWidget->setColumnWidth(3,200);
tableWidget->setRowHeight(3,60);
//设置为由内容决定
tableWidget->resizeColumnsToContents();
tableWidget->resizeRowsToContents();
6 清除表格数据
tableWidget->clear(); //清除所有可见数据(包括表头),行还在
tableWidget->clearContents(); //只清除表中数据,不清除表头内容
tableWidget->setRowCount(0); //连行也清除掉
7 获取/添加/清除行数据
//获取选中表格的行号
int row = tableWidget->currentItem()->row();
//获取表格中当前总行数
int row = tableWidget->rowCount();
//添加一行
tableWidget->setRowCount(row+1);
//清除row行
tableWidget->removeRow(row);
8 注意事项1
在使用on_tableWidget_currentCellChanged槽函数时需要注意负值的判断,
否则在使用clear()或clearContents()时进行删除表格数据时会调用此函数而使得程序异常
void CAN_Demo::on_tableWidget_currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn)
{
// cout << currentRow << currentColumn;
// cout << previousRow << previousColumn;
// Q_UNUSED(currentColumn);
Q_UNUSED(previousRow); //初始化表格后的值为-1
Q_UNUSED(previousColumn); //初始化表格后的值为-1
//要增加功能检测
if(currentRow < 0 || currentColumn < 0)
{
return;
}
... //功能实现
}