1. 边框、字体

  1. // 设置边框
  2. ui->tableWidget->setFrameShape(QFrame::NoFrame);
  3. // 设置选择的模式为单选择
  4. ui->tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);
  5. // 设置选择行为时每次只选一行
  6. ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
  7. // 设置不显示内部表格线
  8. ui->tableWidget->setShowGrid(false);
  9. // 设置字体
  10. QFont font;
  11. font.setBold(true);
  12. ui->tableWidget->setFont(font);
  13. // 隐藏行列
  14. ui->tableWidget->hideRow(1);
  15. ui->tableWidget->hideColumn(1);

2.表单背景(透明、图片)

  1. // 设置表单背景透明
  2. QPalette palette = ui->tableWidget->palette();
  3. palette.setBrush(QPalette::Base, QBrush(QColor(255, 255, 255, 0)));
  4. ui->tableWidget->setPalette(palette);
  5. // 表单背景图片
  6. QString img_path = "img_path";
  7. QPalette palette1 = ui->tableWidget->palette();
  8. palette1.setBrush(QPalette::Base, QBrush(QImage(img_path)));
  9. ui->tableWidget->setPalette(palette1);

3.表头属性修改

  1. // 隐藏水平/垂直表头
  2. ui->tableWidget->horizontalHeader()->hide(); // 或setVisible(false)
  3. ui->tableWidget->verticalHeader()->hide(); // 或setVisible(false)
  4. // 设置表头宽高
  5. ui->tableWidget->horizontalHeader()->setFixedWidth(10);
  6. ui->tableWidget->horizontalHeader()->setFixedHeight(10);
  7. ui->tableWidget->horizontalHeader()->setFixedSize(QSize(10,10));
  8. // 设置表头每一项的宽度
  9. ui->tableWidget->horizontalHeader()->resizeSection(0, 60);
  10. ui->tableWidget->horizontalHeader()->resizeSection(1, 200);
  11. // 表头各列等宽
  12. ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
  13. // 指定列是固定宽度,其余列可拖拉
  14. ui->tableWidget->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);
  15. ui->tableWidget->horizontalHeader()->setSectionResizeMode(1, QHeaderView::Stretch);
  16. ui->tableWidget->horizontalHeader()->setSectionResizeMode(2, QHeaderView::Custom);
  17. ui->tableWidget->horizontalHeader()->setSectionResizeMode(3, QHeaderView::Custom);
  18. ui->tableWidget->horizontalHeader()->resizeSection(3, 200);
  19. ui->tableWidget->horizontalHeader()->resizeSection(2, 60);
  20. /*
  21. enum QHeaderView::ResizeMode
  22. ResizeMode指定了HeaderView的行为。
  23. 它可以在整个HeaderView中设置, 也可以使用setSectionResizeMode()在单独的部分中设置。
  24. enum ResizeMode {
  25. Interactive,
  26. Stretch,
  27. Fixed,
  28. ResizeToContents,
  29. Custom = Fixed
  30. };
  31. QHeaderView::Interactive
  32. 用户可以调整区域的大小
  33. section也可以使用resizeSection()以编程方式调整大小,section大小默认为defaultSectionSize
  34. QHeaderView::Fixed
  35. 用户无法调整该节的大小。
  36. section只能使用resizeSection()以编程方式调整大小, section大小默认为defaultSectionSize。
  37. QHeaderView::Stretch
  38. QHeaderView将自动调整区域大小以填充可用空间。
  39. 大小不能由用户或以编程方式更改。
  40. QHeaderView::ResizeToContents
  41. QHeaderView将根据整个列或行的内容自动调整section的大小为其最佳大小。
  42. 大小不能由用户或以编程方式更改。
  43. */

4.添加、删除元素

  1. // 添加文本
  2. QTableWidgetItem* item = new QTableWidgetItem("COL");
  3. item->setTextAlignment(Qt::AlignCenter);
  4. item->setForeground(Qt::red);
  5. ui->tableWidget->setItem(0, 0, item);
  6. // 添加控件
  7. QPushButton* btn = new QPushButton("btn");
  8. ui->tableWidget->setCellWidget(0, 1, btn);
  9. // 添加复选框
  10. QTableWidgetItem* combo = new QTableWidgetItem();
  11. combo->setCheckState(Qt::Unchecked);
  12. qDebug() << (combo->checkState() == Qt::Unchecked); // true
  13. combo->setText("combo");
  14. combo->setForeground(Qt::red);
  15. ui->tableWidget->setItem(2, 0, combo);
  16. // 添加图片
  17. ui->tableWidget->setItem(row, 0, new QTableWidgetItem(QIcon(":/new/images/kingdemo.ico"), tr("")));
  18. // 删除行列
  19. ui->tableWidget->removeRow(0);
  20. ui->tableWidget->removeColumn(1);
  21. // 清空表格
  22. ui->tableWidget->clear(); // 清空表单内容和表头
  23. ui->tableWidget->clearContents(); // 清空表单内容

5.表格不可编辑

  1. // 设置禁止编辑
  2. ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
  3. // 去除选中单元格的时候出现的虚线矩形框
  4. ui->tableWidget->setFocusPolicy(Qt::NoFocus);

6.表格内容的选择范围设置

  1. // 整行选择
  2. ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
  3. /* QAbstractItemView::SelectionBehavior的枚举类型
  4. QAbstractItemView::SelectItems
  5. 选中单个单元格
  6. QAbstractItemView::SelectRows
  7. 选中一行
  8. QAbstractItemView::SelectColumns
  9. 选中一列
  10. */
  11. // 单个选中和多个选中的设置
  12. ui->tableWidget->setSelectionMode(QAbstractItemView::ExtendedSelection);
  13. /* QAbstractItemView::SelectionMode的枚举类型
  14. QAbstractItemView.NoSelection
  15. 不能选择
  16. QAbstractItemView.SingleSelection
  17. 选中单个目标
  18. QAbstractItemView.MultiSelection
  19. 选中多个目标
  20. QAbstractItemView.ExtendedSelection
  21. QAbstractItemView.ContiguousSelection的区别不明显,
  22. 主要功能是正常情况下是单选,但按下Ctrl或Shift键后,可以多选
  23. */

7.合并单元格

  1. // 其参数为: 要改变单元格的 1行数 2列数, 要合并的 3行数 4列数
  2. ui->tableWidget->setSpan(0, 0, 3, 1);

8.获得点击单元格的内容

  1. connect(ui->tableWidget, &QTableWidget::itemClicked, this, [](QTableWidgetItem* item) {
  2. qDebug() << item->text();
  3. });

9.其他设置

  1. QHeaderView *headerView = horizontalHeader();
  2. headerView->setSectionsMovable(false); // 去除表头的移动
  3. headerView->resizeSection(0,284); // 设置第一列宽
  4. headerView->resizeSection(1,127); // 设置第二列宽
  5. headerView->setResizeMode(QHeaderView::Fixed); // 列表不能移动
  6. headerView->setSectionsClickable(false); // 不响应鼠标单击
  7. setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); // 去掉水平滚动条
  8. setVerticalScrollMode(QAbstractItemView::ScrollPerItem); // 垂直滚动条按项移动
  9. setAutoScroll(false); // 去掉自动滚动