1. 边框、字体
// 设置边框ui->tableWidget->setFrameShape(QFrame::NoFrame);// 设置选择的模式为单选择ui->tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);// 设置选择行为时每次只选一行ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);// 设置不显示内部表格线ui->tableWidget->setShowGrid(false);// 设置字体QFont font;font.setBold(true);ui->tableWidget->setFont(font);// 隐藏行列ui->tableWidget->hideRow(1);ui->tableWidget->hideColumn(1);
2.表单背景(透明、图片)
// 设置表单背景透明QPalette palette = ui->tableWidget->palette();palette.setBrush(QPalette::Base, QBrush(QColor(255, 255, 255, 0)));ui->tableWidget->setPalette(palette);// 表单背景图片QString img_path = "img_path";QPalette palette1 = ui->tableWidget->palette();palette1.setBrush(QPalette::Base, QBrush(QImage(img_path)));ui->tableWidget->setPalette(palette1);
3.表头属性修改
// 隐藏水平/垂直表头ui->tableWidget->horizontalHeader()->hide(); // 或setVisible(false)ui->tableWidget->verticalHeader()->hide(); // 或setVisible(false) // 设置表头宽高ui->tableWidget->horizontalHeader()->setFixedWidth(10);ui->tableWidget->horizontalHeader()->setFixedHeight(10);ui->tableWidget->horizontalHeader()->setFixedSize(QSize(10,10));// 设置表头每一项的宽度ui->tableWidget->horizontalHeader()->resizeSection(0, 60);ui->tableWidget->horizontalHeader()->resizeSection(1, 200);// 表头各列等宽ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);// 指定列是固定宽度,其余列可拖拉ui->tableWidget->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);ui->tableWidget->horizontalHeader()->setSectionResizeMode(1, QHeaderView::Stretch);ui->tableWidget->horizontalHeader()->setSectionResizeMode(2, QHeaderView::Custom);ui->tableWidget->horizontalHeader()->setSectionResizeMode(3, QHeaderView::Custom);ui->tableWidget->horizontalHeader()->resizeSection(3, 200);ui->tableWidget->horizontalHeader()->resizeSection(2, 60);/*enum QHeaderView::ResizeMode ResizeMode指定了HeaderView的行为。 它可以在整个HeaderView中设置, 也可以使用setSectionResizeMode()在单独的部分中设置。 enum ResizeMode { Interactive, Stretch, Fixed, ResizeToContents, Custom = Fixed }; QHeaderView::Interactive 用户可以调整区域的大小 section也可以使用resizeSection()以编程方式调整大小,section大小默认为defaultSectionSizeQHeaderView::Fixed 用户无法调整该节的大小。 section只能使用resizeSection()以编程方式调整大小, section大小默认为defaultSectionSize。QHeaderView::Stretch QHeaderView将自动调整区域大小以填充可用空间。 大小不能由用户或以编程方式更改。QHeaderView::ResizeToContents QHeaderView将根据整个列或行的内容自动调整section的大小为其最佳大小。 大小不能由用户或以编程方式更改。*/
4.添加、删除元素
// 添加文本QTableWidgetItem* item = new QTableWidgetItem("COL");item->setTextAlignment(Qt::AlignCenter);item->setForeground(Qt::red);ui->tableWidget->setItem(0, 0, item);// 添加控件QPushButton* btn = new QPushButton("btn");ui->tableWidget->setCellWidget(0, 1, btn);// 添加复选框QTableWidgetItem* combo = new QTableWidgetItem();combo->setCheckState(Qt::Unchecked);qDebug() << (combo->checkState() == Qt::Unchecked); // truecombo->setText("combo");combo->setForeground(Qt::red);ui->tableWidget->setItem(2, 0, combo);// 添加图片ui->tableWidget->setItem(row, 0, new QTableWidgetItem(QIcon(":/new/images/kingdemo.ico"), tr("")));// 删除行列ui->tableWidget->removeRow(0);ui->tableWidget->removeColumn(1);// 清空表格ui->tableWidget->clear(); // 清空表单内容和表头ui->tableWidget->clearContents(); // 清空表单内容
5.表格不可编辑
// 设置禁止编辑ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);// 去除选中单元格的时候出现的虚线矩形框ui->tableWidget->setFocusPolicy(Qt::NoFocus);
6.表格内容的选择范围设置
// 整行选择ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);/* QAbstractItemView::SelectionBehavior的枚举类型QAbstractItemView::SelectItems 选中单个单元格QAbstractItemView::SelectRows 选中一行QAbstractItemView::SelectColumns 选中一列*/// 单个选中和多个选中的设置ui->tableWidget->setSelectionMode(QAbstractItemView::ExtendedSelection);/* QAbstractItemView::SelectionMode的枚举类型QAbstractItemView.NoSelection 不能选择QAbstractItemView.SingleSelection 选中单个目标QAbstractItemView.MultiSelection 选中多个目标QAbstractItemView.ExtendedSelection QAbstractItemView.ContiguousSelection的区别不明显, 主要功能是正常情况下是单选,但按下Ctrl或Shift键后,可以多选*/
7.合并单元格
// 其参数为: 要改变单元格的 1行数 2列数, 要合并的 3行数 4列数 ui->tableWidget->setSpan(0, 0, 3, 1);
8.获得点击单元格的内容
connect(ui->tableWidget, &QTableWidget::itemClicked, this, [](QTableWidgetItem* item) { qDebug() << item->text();});
9.其他设置
QHeaderView *headerView = horizontalHeader();headerView->setSectionsMovable(false); // 去除表头的移动headerView->resizeSection(0,284); // 设置第一列宽headerView->resizeSection(1,127); // 设置第二列宽headerView->setResizeMode(QHeaderView::Fixed); // 列表不能移动headerView->setSectionsClickable(false); // 不响应鼠标单击setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); // 去掉水平滚动条setVerticalScrollMode(QAbstractItemView::ScrollPerItem); // 垂直滚动条按项移动setAutoScroll(false); // 去掉自动滚动