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大小默认为defaultSectionSize
QHeaderView::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); // true
combo->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); // 去掉自动滚动