QTableWidget、QTableView设置行高、列宽不起效果的解决办法

解决QTableWidget行高列宽设置无效

目录

1. 问题的提出

2. 总结


1. 问题的提出

      今天在一个很小的显示屏上部署Qt程序,程序用QTableWidget显示数据,但出现了垂直滚动条,客户说数据不是很多,滚动条最好不要显示。如果将每行行高稍微调小一些,垂直滚动条就没有了,但无论怎么调小行高值,行高就是不变,例如:用下面代码将所有行高都设置为很小值,但不起作用:

 for(auto rowIndex = 0; rowIndex < ui->tableWidget->rowCount(); ++rowIndex)
 {
     ui->tableWidget->setRowHeight(rowIndex, 10);
 }

代码1

这是因为调用setRowHeight设置的行高值比QTableWidget、QTableView默认最小行高值还小,如果此时不人为调整默认最小行高值比新设置的值还小,则新设置的行高值不起作用。

注意:不同系统下,QTableWidget、QTableView默认最小行高值不同,在Windows 11下经测试默认行高值为23,可以通过如下代码获取当前系统下的默认最小行高值:

auto defaultMinimumSectionSize = ui->tableWidget->verticalHeader()->minimumSectionSize();

代码2

有了上面的知识,通过更改默认最小行高值,使其比代码1中的设置的行高值10还小,代码1中的设置行高值才会其作用,如下:

ui->tableWidget->verticalHeader()->setMinimumSectionSize(1);

依次类比,当改变列宽不起作用时,需要检查新设置的列宽值是不是比默认列宽最小值还小,如果是,则需将默认列宽值通过如下代码改为比新设置值更小:

ui->tableWidget->horizontalHeader()->setMinimumSectionSize(1/*此处设置默认最小列宽值*/);

2. 总结

      要使设置行高、列宽值起作用,则设置的行高值不能比默认的最小行高值还小;设置的列宽值不能比默认的最小列宽值还小;此时可以将默认最小行高值、默认最小列宽值改为比新设置的行高值、列宽值更小而实现功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值