1、列宽设置如下:
view->setColumnWidth(1, 100);//设置第1列宽100
view->resizeColumnToContents(1);//设置第1列宽度自适应内容
view->resizeColumnsToContents();//设置所有列宽度自适应内容
//下面是通过表头设置列宽
view->horizontalHeader()->setMinimumSectionSize(100);//设置最小列宽
view->horizontalHeader()->setMaximumSectionSize(100);//设置最大列宽
//设置第1列自动...
temptb->horizontalHeader()->setSectionResizeMode(2,QHeaderView::Stretch);
//设置所有列自动...
temptb->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
/*第二个参数可以为:
QHeaderView::Interactive :0 用户可设置,也可被程序设置成默认大小
QHeaderView::Fixed :2 用户不可更改列宽
QHeaderView::Stretch :1 根据空间,自动改变列宽,用户与程序不能改变列宽
QHeaderView::ResizeToContents:3 根据内容改变列宽,用户与程序不能改变列宽
*/
2、注意事项:
(1)设置固定的列宽要在view->seModel(model);之后进行设置,不然无效;
(2)通过表头设置setSectionResizeMode时,参数为QHeaderView::Stretch 和 QHeaderView::ResizeToContents 时,用户和程序不能改变列宽;因此,当内容太多时,用QHeaderView::Stretch时这些内容可能不会完全显示,用户因为不能改变列宽而不能拖动查看隐藏部分;用QHeaderView::ResizeToContents时,内容太多的这一列会特别长;注意效果!
(3)除了(2)中的两种情况,其他时,用户均能改变列宽;
(4)所以,如果知道每列内容长度不会很长,可以用QHeaderView::Stretch, QHeaderView::ResizeToContents,
(5)如果无法预料内容长度,还是设置固定宽度为好。
(6)view->resizeColumnToContents(1);view->resizeColumnsToContents();必须在model里加入内容后执行列宽才能适应内容宽度;否则model为空时执行此句,列宽只能适应空内容而变的很窄,之后再添加内容也不会变宽;