1、功能使用
1.1、清空表格所有数据
ui->tableWidget->setRowCount(0);//设置行数为0,数据清空(不包括表头)
ui->tableWidget->clear();//数据清空,表头也清空
1.2、获取表格的总行数和总列数
int rowCount = ui->tableWidget->rowCount();//行数
int columnCount = ui->tableWidget->columnCount();//列数
1.3、单元格插入和获取数据
1.3.1、在单元格里存取常见类型数据
//存数据方法一
ui->tableWidget->insertRow(0);//在表格第1行插入一行空白行
QTableWidgetItem * item = new QTableWidgetItem(QStringLiteral("张三"));
item->setData(Qt::UserRole,1);//可以在单元格存另外的值,该值不显示在界面上
ui->tableWidget->setItem(0, 0, item );//设置第一行第一列的单元格内容为“张三”
//存数据方法二
ui->tableWidget->insertRow(0);//在表格第1行插入一行空白行
ui->tableWidget->setItem(0,0, new QTableWidgetItem("张三"));
//取数据
QString name = ui->tableWidget->item(0,0)->text(); //获取第一行第一列的内容
int id= ui->tableWidget->item(0,0)->data(Qt::UserRole).toInt(); //获取setData的值
1.3.2、在单元格里存取自定义类型的数据
//存数据
MyClass myClass;
QTableWidgetItem * item = new QTableWidgetItem(myClass.name);
item->setData(Qt::UserRole, QVariant::fromValue(myClass));
//取数据
MyClass myclass = item->data(Qt::UserRole).value<MyClass>();
1.4、获取当前选中的单元格信息
QTableWidgetItem * item = ui->tableWidget->currentItem();//当前选中的单元格
int currentRow = ui->tableWidget->currentRow();//当前选中的单元格的行
int columnCount = ui->tableWidget->currentColumn();//当前选中的单元格的列
2、样式设置
2.1、单元格样式设置
2.1.1、点击某个单元格时,整行单元格都被选中。
ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);//选择模式-整行选中
2.1.2、单机或者双击单元格时,单元格内容锁定,不允许编辑。
ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);//不可编辑
2.1.3、单元格文本内容对齐方式
//方法一:通过单独设置Item,再添加到QTableWidget中,可以使表格中的不同列文本排列方式都不同
QTableWidgetItem *item = new QTableWidgetItem(“文本内容”);
item->setTextAlignment(Qt::AlignLeft);//文本居左
item->setTextAlignment(Qt::AlignCenter);//文本居中
item->setTextAlignment(Qt::AlignRight);//文本居右
tablewidget->setItem(row,coloumn,item);//添加到表格中指定位置
//方法二:设置表格item边距,文本会在距item 10像素的位置开始填充
this->setStyleSheet(“QTableWidget::item{border-left:10px solid #FFFFFF;border-right:10px solid #FFFFFF;}”);
2.2、表头样式设置
2.2.1、列宽设置
2.2.1.1、当表头较少无法填充满时,最后一个表头铺满,即行末不留空。
ui->tableWidget->horizontalHeader()->setStretchLastSection(true);//最后一列铺满
2.2.1.2、表头平均分配列宽
ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); // 平分
2.2.1.3、根据内容大小分配列宽(两行必须都写)
ui->tableWidget->resizeColumnsToContents();
ui->tableWidget->horizontalHeader()->sectionResizeMode(QHeaderView::ResizeToContents);
2.2.2、QTableWidget表头下无分隔线不显示的问题
//横向表头
ui->table->horizontalHeader()->setStyleSheet(
"QHeaderView::section{"
"border-top:0px solid #E5E5E5;"
"border-left:0px solid #E5E5E5;"
"border-right:0.5px solid #E5E5E5;"
"border-bottom: 0.5px solid #E5E5E5;"
"background-color:white;"
"padding:4px;"
"}"
);
//纵向表头
ui->table->horizontalHeader()->setStyleSheet(
"QHeaderView::section{"
"border-top:0.5px solid #E5E5E5;"
"border-left:0px solid #E5E5E5;"
"border-right:0.5px solid #E5E5E5;"
"border-bottom: 0px solid #E5E5E5;"
"background-color:white;"
"padding:4px;"
"}"
);
//左上角第0行第0列的那个格子的边框线
ui->table->horizontalHeader()->setStyleSheet(
"QTableCornerButton::section{"
"border-top:0px solid #E5E5E5;"
"border-left:0px solid #E5E5E5;"
"border-right:0.5px solid #E5E5E5;"
"border-bottom: 0.5px solid #E5E5E5;"
"background-color:white;"
"}"
);