目录
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. 总结
要使设置行高、列宽值起作用,则设置的行高值不能比默认的最小行高值还小;设置的列宽值不能比默认的最小列宽值还小;此时可以将默认最小行高值、默认最小列宽值改为比新设置的行高值、列宽值更小而实现功能。
解决QTableWidget行高列宽设置无效
3038

被折叠的 条评论
为什么被折叠?



