QTableWidget 列宽度(包括平均宽度与固定宽度)

1.设置表所有列宽度平均

可以使用setSectionResizeMode设置 QTableWidget 的列宽度按照平均分配:

tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);

该模式会让所有的列宽度都按照平均分配来调整,使得它们能够占满整个表格的宽度,但有时会存在出现进度条的情况,观感不是特别好。

2.设置表所有列为固定值

使用QHeaderView::Fixed设置所有的列的宽度都按照固定值来调整:

tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Fixed);

该模式使所有的列的宽度都固定下来,不会再自动调整了。

3.使用QHeaderView::Fixed模式计算并设置平均宽度(推荐)

setSectionResizeMode可以对指定行设置按内容自动分配宽度或固定值:

tableWidget->horizontalHeader()->setSectionResizeMode(column, QHeaderView::Stretch);
或
tableWidget->horizontalHeader()->setSectionResizeMode(column, QHeaderView::Fixed);

其中 column 为列号。

因为第一个方法直接设置会导致观感不好,内容没有超出表格,却出现了横向滚动条,所以采取以下方法:

//如果列数大于6行,则不平均列宽,否则可能存在横向滚动条问题,查看不方便
if (tableWidget->columnCount() < 6 && tableWidget->columnCount() > 0)
{
	//根据列数,平均每一列宽度
	int nTableWidth = tableWidget->viewport()->size().width();
    //计算每一列平均宽度
	int nAvrageWidth = nTableWidth / tableWidget->columnCount();
	for (int i = 0; i < tableWidget->columnCount(); i++)
	{
		//使用QHeaderView::Stretch模式,会出现滚动条,效果不如Fixed
		tableWidget->horizontalHeader()->setSectionResizeMode(i, QHeaderView::Fixed);
		tableWidget->setColumnWidth(i, nAvrageWidth);
	}
}

这样大于6列的列表就会正常按照内容显示,也不会出现横向滚动条的问题;小于6列的列表,如只有2列的列表,则每一列宽度一致,不会出现第一列窄,第二列过宽的情况。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值