计算 QTableWidget 所需的确切高度

问题描述 投票:0回答:1

我想计算

QTableWidget
所需的确切高度,以便不显示垂直滚动条。我现在所做的例如:

tableWidget->setMaximumHeight(tableWidget->horizontalHeader()->height()
                              + tableWidget->rowHeight(0) * 4
                              + 4);

对于这种情况,有 4 行相同高度和 KDE 的 Breeze 样式集,这完全有效:

Widget shown with KDE's Breeze style

但是额外的 4 个像素似乎与样式相关,使用 Fusion 样式我得到的空间比我需要的多一点(参见最后一行,有 2 个不需要的白色像素):

Widget shown with the Fusion style

有没有一种方法可以独立于款式或更好地考虑款式来计算所需的确切尺寸?

2024-08 更新: 使用下面的解决方案(查看视口高度)不再适用于使用 Qt 6 / Plasma 6 的所有样式。

除了行高和标题高度之外,计算所需像素的方法是采用小部件高度 - 视口高度 - 标题高度。

这仍然适用于 Fusion,例如小部件高度为 480 像素,视口高度为 456,标题为 22,得到我需要的 2 像素:

QTableWidget using the Fusion style

但是使用 Breeze 时,高度是不同的:小部件为 480 像素,视口为 450 像素,标题为 30 像素,结果为 0(我们需要 4 像素)。因此,我在使用 Breeze 时再次出现滚动条:

QTableWidget using the Breeze style

有没有例如我可以从中导出所需的像素的一些像素度量值?

c++ qt qt5 qtablewidget
1个回答
1
投票

您可以通过“tableWidget->viewport()->height()”获取tableWidget的高度。

对于垂直滚动条,可以使用此功能。

setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff)
Then, the vertical scrollbar will be permanently hidden.
© www.soinside.com 2019 - 2024. All rights reserved.