【发布时间】:2023-04-02 18:13:01
【问题描述】:
我有一个 QTableWidget,最后一列包含可变长度的文本。
我想根据部分的大小将 QHeaderView 的最后一部分拉伸或调整为其内容。如果内容大小不超过小部件中的剩余空间,我想拉伸它(以防止小部件中出现丑陋的未填充空间)。我可以通过使用setStretchLastSection(True) 来实现这一点。但是,如果内容大小超过了拉伸的列,我的内容的最后部分将被剪切,因为该列没有调整大小。 QHeaderView 为这种情况提供了ResizeToContents ResizeMode,但这会在内容短的情况下为小部件留下未填充的空间。
我考虑过手动调整列大小。不幸的是,我无法直接访问内容大小,因为sectionSizeFromContents() 受到保护。我想我可以继承 QHeaderView 并重新实现它,但我想知道是否有更好的解决方案。
【问题讨论】:
-
在 pyqt 中可以访问受保护的方法,如果您不使用 python,请从您的问题中删除 pyqt 标签。
-
我正在使用 pyqt5。尝试调用
sectionSizeFromContents()时,我收到以下异常:RuntimeError: no access to protected functions or signals for objects not created from Python。 -
是的,只需创建
QHeaderView的实例并将其设置在桌子上即可。无需创建子类。 -
哦,我不知道这有什么不同。我确实可以通过自己创建一个实例来访问该方法。但是,我误解了
sectionSizeFromContents()的功能,但可以使用其他功能解决我的问题。
标签: qt pyqt qt5 pyqt5 qheaderview