首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >QHeaderView:基于列的内容大小的拉伸或ResizeToContents

QHeaderView:基于列的内容大小的拉伸或ResizeToContents
EN

Stack Overflow用户
提问于 2017-12-13 13:04:25
回答 1查看 5K关注 0票数 4

我有一个包含可变长度文本的最后一列的QTableWidget。

我希望根据该节的大小将QHeaderView的最后一部分扩展或调整为其内容。如果内容大小不超过小部件中剩余的空间,我希望扩展它(以防止小部件中出现难看的未填充的空间)。我可以通过使用setStretchLastSection(True)来实现这一点。但是,如果内容大小超过拉伸列,则将剪切我的内容的最后部分,因为该列没有调整大小。QHeaderView为本例提供了ResizeToContents ResizeMode,但在内容较短的情况下,这会给小部件留下未填充的空间。

我考虑手动调整列大小。不幸的是,我不能直接访问内容大小,因为sectionSizeFromContents()是受保护的。我想我可以子类QHeaderView并重新实现它,但是我想知道是否有更好的解决方案。

EN

Stack Overflow用户

回答已采纳

发布于 2017-12-15 14:28:18

我误解了QHeaderView::sectionSizeFromContents()的功能。我假设它返回属于该节的单元格的节大小,但是这些信息当然不能存储在标头中。相反,它返回标题内容的大小,即给定的标签。

但是,可以通过QTableWidget::sizeHintForColumn()获得列的内容大小。我的表只有两列,因此要计算第二列的剩余空间,可以使用:

代码语言:javascript
运行
复制
stretched_size = table.viewport().size().width() - table.horizontalHeader().sectionSize(0)

它等于ResizeMode::Stretch中的列大小。因此,我可以通过将区段大小设置为拉伸大小的最大值和列的大小提示来解决问题:

代码语言:javascript
运行
复制
size = max(table.sizeHintForColumn(1), stretched_size)
table.horizontalHeader().resizeSection(1, size)
票数 6
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47793748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档