在 ResizeToContents 模式下调整大小时,QHeaderView 仅考虑当前屏幕上的项目

Posted

技术标签:

【中文标题】在 ResizeToContents 模式下调整大小时,QHeaderView 仅考虑当前屏幕上的项目【英文标题】:QHeaderView only accounts for items currently on screen when resizing in ResizeToContents mode 【发布时间】:2016-03-01 15:45:29 【问题描述】:

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

... In the form's constructor

ui->myTable->horizontalHeader()->setResizeMode( 1, ResizeToContents );
ui->myTable->horizontalHeader()->setStretchLastSection( true );

...

这适用于指定列的大小以适合当前可见(在屏幕上)的最大项目的例外情况,这意味着任何更宽的列都将被缩小,并以“...”结尾并被截断内容。或者,我尝试了以下方法:

... Populate the table ...

ui->myTable->resizeColumnToContents( 1 );

...

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

考虑到行中的所有项目,我怎样才能让列调整大小,而不仅仅是那些可见的?

【问题讨论】:

【参考方案1】:

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

此错误会导致表格仅调整当前在其视口中的项目的大小,并且已针对 >= 5.2 的版本进行了修复。您可以通过继承 QHeaderView 来解决这个问题,但这似乎是一种相当累人的方法。如果可行,我建议您切换到更新的 Qt 版本。

【讨论】:

以上是关于在 ResizeToContents 模式下调整大小时,QHeaderView 仅考虑当前屏幕上的项目的主要内容,如果未能解决你的问题,请参考以下文章

如何在编辑模式下调整 UITableViewCell 背景的大小

QTableView根据内容自动调整列宽行高

QTableView根据内容自动调整列宽行高

QTableView根据内容自动调整列宽行高

大数据之Redis:哨兵模式(sentinel)

UIPicker 在横向模式下调整大小