【问题标题】:How to get the size (height) of a label after the word wrap如何在自动换行后获取标签的大小(高度)
【发布时间】:2014-04-25 20:11:57
【问题描述】:

首先,很抱歉,因为我没有任何代码示例可提供(缩小范围非常复杂)。

基本上,我有 QLabel,我想在应用自动换行后访问标签的高度。

它似乎总是返回默认值(640x480)而不是它需要的实际高度(427 像素)。

这很奇怪,因为没有 .setWordWrap,我得到了正确的值 (16449 x 13)。

有什么想法吗?

【问题讨论】:

  • 检查this answer 的建议是否适合您。在布局小部件之前,不能保证大小有效,并且在它们可见时进行布局。第一步是在小部件在屏幕上可见后检查您是否获得了正确的尺寸(比如在show() 之后 1 秒,但请确保您没有阻塞事件循环)。请记住,文字包装的标签具有宽度换高,它只能给出一定宽度的高度,而不是抽象的。
  • 对不起,你所说的“一个文字包装的标签有高度比宽度”是什么意思,因为我认为这对我来说可能很重要!
  • 我的意思是我所说的。每个宽度都有不同的高度,因为高度取决于宽度。
  • 看看这个问题是否有帮助 - stackoverflow.com/questions/2427103/…
  • @sashoalm 您链接到的答案仅适用于小部件旨在保持不可见的情况。它也没有解决 height-for-width 问题。

标签: qt pyqt word-wrap qlabel


【解决方案1】:

只需从 QLabel 继承一个自定义类并重新实现函数“resizeEvent”

class NewLabel(QLabel):
    def __init__(self, text):
        super(NewLabel, self).__init__(text)

    def resizeEvent(self, event):
        width = self.width()
        height = self.height()

        # you can then emit a signal with the size information

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-10
    • 1970-01-01
    • 2012-09-07
    相关资源
    最近更新 更多