使用QTableWidget主要合以下三个类打交道:
QTableWidgetItem,代表表格中的单元格,可以设置文字字体等;
QTableWidget,代表表格,复制管理表格中的item;
QHeaderView类代表表格的表头,可以对表头的样式做一系列设置。水平表头和垂直表头分别可以通过QTableWidget对象的horizontalHeader();和verticalHeader();获得
假设有以下几个对象的指针:
要在表格的某个单元格添加文字,需要往表格中添加单元格,再设置单元格文字,新创建的表格里面是没有item对象的,需要自己创建。
QStringList list;
QTableWidget* table = new QTableWidget;
list<<QStringLiteral("文字1")<<QStringLiteral("文字2")<<QStringLiteral("文字3");
table->setHorizontalHeaderLabels(list); //设置水平表头
table->setColCount(3);
table->setRowCount(6);
QTableWidgetItem* item = new QTableWidgetItem;
table->setText(QStringLiteral("文字"));
table->setItem(0,0,item); //设置表格中的内容
1.把某个单元格设置为widget,可以是QFrame,QComboBox,通过这个可以在某个单元格设置下拉框,单选按钮等其他控件。
table->setCellWidget(row,col,widget);
2.设置表格不可编辑
可以单独设置某个单元格,item->setFlags(item->flags()&(~Qt::ItemIsEditable));
也可以对表格整体进行设置,table->setEditTriggers(QAbstractItemView::NoEditTriggers);
3.列宽分配
(1).表格窗口比表格宽时,拉伸最后一列填满窗口的宽度。
table->horizontalHeader()->setStretchLastSection(true);//只有调用了这个表格窗口才会被填满
(2).按单元格中的内容长度分配宽度
table->horizontalHeader()->resizeSections(QHeaderView::ResizeToContents);
(3).平均分配列宽
table->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
4.合并单元格
table->setSpan(row,col,row_num,col_num);前两个参数指定合并起始单元格,为起始单元格的行号列号,后两个为从起始位置开始合并的行数和列数。行列数包含起始的一格。
5.设置单元格中的文字格式
QFont font //控制文字格式的对象
font.setBold(true);//加粗
font.setPixelSize(14);//字号
item->setFont(font);
item->setTextAlignment(Qt::AlignCenter);//居中对齐