Qt常用基础控件总结—表格控件(QTableWidget类)

表格控件QTableWidget

表格控件最上面一排是只读的水平表头,最左边一列是只读的垂直表头。表头又可以细分为多个分段(section),水平表头的分段就是表格各个列的列首,垂直表头 分段就是表格各个行的行首。表格控件的实体区域是按行、列排布的单元格,单元格内容一般用 QTableWidgetItem 条目填充,单元格如果不填充任何东西,那么默认是 NULL。

表格控件的有很多名字相似的两套函数或信号,比如设置当前高亮单元格函数 setCurrentCell(int row, int column) 和设置当前高亮条目 setCurrentItem(QTableWidgetItem * item),这两个函数名字很类似,二者最主要的区别就是:名字带 Cell 的函数是基于单元格的,对 NULL 空单元格也可以使用;而名字带 Item 的函数,必须是填充了实体条目的单元格,针对实际存在的单元格条目操作

表格控件因为设置单元格必须同时知道行号、列号,所以没有 Add和 Insert之类的添加函数,表格只有如下设置条目函数

制作表格控件步骤
1)设置表格行数,列数(如果没有设置,表格数据不会显示)

2)根据设计需要设置水平表头、垂直表头标签

3)设置表格数据(基于QTableWidgetItem类设置表格数据)

4)与表格交互

5)根据需要设置表格样式,这一步骤在以上过程中穿插进行

常用函数如下:

初始化表格控件

初始化表格控件,设置表格行数/列数/表头等参数

QTableWidget(QWidget * parent = 0);
QTableWidget(int rows, int columns, QWidget * parent = 0);//构造函数,构造表格控件,指定表格行和列

void setRowCount(int rows) //设置行数

void setColumnCount(int columns) //设置列数

int rowCount() const //获取行数

int columnCount() const //获取列数

void QTableView::setColumnWidth(int column, int width);//设置指定列的宽度

void QTableView::setRowHeight(int row, int height);//设置指定行的行高

void QTableWidget::setHorizontalHeaderLabels(const QStringList &labels);//设置水平表头

设置水平表头举例如下:

QStringList headerList;
headerList << QString::fromLocal8Bit("学号")
           << QString::fromLocal8Bit("姓名")
           << QString::fromLocal8Bit("语文")
           << QString::fromLocal8Bit("数学")
           << QString::fromLocal8Bit("英语") ;

ui->tableWidget->setColumnCount(headerList.size());
ui->tableWidget->setHorizontalHeaderLabels(headerList);

void QHeaderView::setSectionResizeMode(ResizeMode mode);//设置表头尺寸模式
void QHeaderView::setSectionResizeMode(int logicalIndex, ResizeMode mode);//指定索引表头的尺寸模式
ResizeMode模式有以下几种:

  • Interactive:交互模式,通过鼠标拖拽表格中间的分割线调整表格宽度,默认设置
  • Stretch:使每一列都相等,并占满表格宽度
  • Fixed:这个模式一般与其他属性一起设置,比如手动设置列的宽度,设置最后一列自动拉伸
  • ResizeToContents:列的宽度会根据列标题文字的宽度自动设置
  • Custom = Fixed
    以上列宽模式也可以混合使用,如已经设置了Stretch模式,但是觉得某一列宽度不合适,可以按照如下方式进行设置:
ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
ui->tableWidget->horizontalHeader()->setSectionResizeMode(
  • 17
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值