gpt4 book ai didi

qt - QHeaderView:根据列的内容大小拉伸(stretch)或调整大小到内容

转载 作者:行者123 更新时间:2023-12-02 07:53:43 26 4
gpt4 key购买 nike

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

我想根据该部分的大小将 QHeaderView 的最后一部分拉伸(stretch)或调整其内容。如果内容大小不超过小部件中的剩余空间,我想拉伸(stretch)它(以防止小部件中出现丑陋的未填充空间)。我可以使用 setStretchLastSection(True) 来实现此目的。但是,如果内容大小超过拉伸(stretch)的列,则内容的最后部分将被剪切,因为列的大小不会调整。 QHeaderView 为这种情况提供了 ResizeToContents ResizeMode,但是在内容较短的情况下,这会导致小部件有未填充的空间。

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

最佳答案

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

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

stretched_size = table.viewport().size().width() - table.horizontalHeader().sectionSize(0)

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

size = max(table.sizeHintForColumn(1), stretched_size)
table.horizontalHeader().resizeSection(1, size)

关于qt - QHeaderView:根据列的内容大小拉伸(stretch)或调整大小到内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47793748/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com