QHeaderView 仅在“调整大小到内容”模式下调整大小时考虑屏幕上的当前项目

QHeaderView only accounts for items currently on screen when resizing in ResizeToContents mode

本文关键字:调整 屏幕 项目 小时 模式 仅在 QHeaderView      更新时间:2023-10-16

我的QTableWidget中有一列,其内容长度可变。重要的是,整个内容都是可见的(不...),但我只想提供所需的空间。这是我完成此操作的代码。

... In the form's constructor
ui->myTable->horizontalHeader()->setResizeMode( 1, ResizeToContents );
ui->myTable->horizontalHeader()->setStretchLastSection( true );
...

这适用于以下情况:指定列的大小适合当前可见的最大项目(在屏幕上),这意味着任何更宽的列都保留为窄,并以"..."和截断的内容。或者,我尝试了以下方法:

... Populate the table ...
ui->myTable->resizeColumnToContents( 1 );
...

不幸的是,这似乎与第一个代码片段的行为相同,仅在调整大小时考虑可见列。

如何让列调整大小,考虑行中的所有项目,而不仅仅是可见的项目?

由于您将其标记为qt4,我怀疑这是由此处所示的错误引起的:https://bugreports.qt.io/browse/QTBUG-4206

此错误导致表仅调整当前在其视口中的项目的大小,并且针对版本>= 5.2 进行了修复。您可能会在子类化QHeaderView中解决此问题,但这似乎是一种相当疲惫的方法。如果可行,我建议您切换到更新的Qt版本。