一、简介
QTableWidget是Qt对话框中显示数据表格的控件,QTableWidget继承于类QTableView,
QTableWidget单元格数据是QTableWidgetItem对象来实现的,整个表格都需要用逐个单元格对象QTableWidgetItem构建起来。
二、属性
实例化对象:QTableWidget *tableWidget = new QTableWidget();
(1)表格设置
//设置表格标题栏名称
tableWidget->setWindowTitle("QTableWidget & Item");
//设置表格不可编辑
tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
//设置表格尺寸
tableWidget->resize(400, 300);
(2)表头设置
//设置表头的显示与隐藏
tableWidget ->verticalHeader()->setVisible(true); //竖直显示
tableWidget ->horizontalHeader()->setVisible(false); //水平隐藏
//设置表头字段
QStringList header;
header<<"Name"<<"Age";
tableWidget->setHorizontalHeaderLabels(header);
//居中显示:
tableWidget->headerItem()->setTextAlignment(0,Qt::AlignHCenter | Qt::AlignVCenter);
//表头背景色
tableWidget->setStyleSheet("QHeaderView::section{background-color:rgb(50,93,111);}");
//设置表头的高度
table_widget->horizontalHeader()->setFixedHeight(25);
(3)列设置
//设置列数
tableWidget->setColumnCount(5);
//设置列宽
固定列宽:tableWidget->setColumnWidth(0, 90);
平均列宽:tableWidget->horizontalHeader()->setSectionResizeMode(QHeader::Stretch);
//首列序号不显示
QHeaderView *view = table->verticalHeader();
view->setHidden(true);
(4)行设置
//设置行数
tableWidget->setRowCount(10);
//设置点击单元格显示整行
tableWidget ->setSelectionBehavior(QAbstractItemView::SelectRows);
//设置行自动换行
tableWidget->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
(5)综合设置
//设置网格线
tableWidget->setShowGrid(true); //显示表格线
//设置单元格字体对齐方式
tablewidget->item(0, 0)->setTextAlignment(Qt::AlignHCenter);
(6)添加数据
//单元格插入控件
qtablewidget->setCellWidget(0,3,pushBt);
//单元格中插入图片
tablewidget->setItem(3, 2, new QTableWidgetItem(QIcon("images/music.png"), "Music"));
//单元格添加文子
tablewidget->setItem(1, 0, new QTableWidgetItem(str));
(7)点击表格中添加的按钮,获取被点击行的数据
QPushButton *delBt = new QPushButton("删除");
Connect();
void SlotDeteleInfo()
{
QPushButton *click_btn = (QPushButton*)sender;
QModelIndex index = tableWidget->indexAt(QPoint(click_btn->frameGeometry().x(),click_btn->frameGeometry().y()));
int row = index.row(); //获取行号
QString name = tableWidget->item(row,0)->text();
QString Age = tableWidget->item(row,1)->text();
}