【发布时间】:2015-10-10 16:13:57
【问题描述】:
我需要使用具有以下要求的 QLabel 显示文本:
- 自动换行
- 根据文本长度从小宽度扩展到全宽度,同时标签占一行
- 标签采用多行时总是全宽
- 标签的背景填充了一些颜色
我尝试将带有 sizePolicy (Preferred, Preferred) 的 QLabel 和带有 sizePolicy (Expanding, Minimum) 的 QSpacerItem 放入 QHBoxLayout。
我希望文本在到达右侧之前不被包裹。
但我知道文本在到达右侧之前被换行了。
如何防止这种不必要的自动换行?
复制代码
注意
- 如果我不在HBox中放置spacer,那么满足要求1和3,但是2(文本不存在的区域用背景色填充,此时我不希望这种行为)。李>
- 如果我禁用自动换行,则满足要求 2,但满足要求 1。
相关问题
这个问题是关于类似的问题,但是没有布局。
【问题讨论】:
-
无法访问这些数字。可以在这里添加吗?您是否还为 QLabel 设置了最小和最大宽度?
-
在此示例中添加垫片毫无意义,因为您只需删除垫片并获得所需的行为。您应该描述您的实际用例。您可以使用
QBoxLayout::setStretch来确定为每个扩展项分配多少空间(例如,将标签设置为stretch=4,将间隔设置为1,将给标签全宽的4/5)。如果布局中的其他项目是固定大小的,则展开标签将占用所有可用空间。 -
@techneaz 感谢您发现问题。我修复了链接。
-
@techneaz 我没有设置最小/最大大小,或者我为它们使用默认值,但我认为没关系。因为我不能给出常数值。
-
@PavelStrakhov 谢谢。抱歉,问题可能不清楚。我应该用一些颜色填充标签的背景,但不应该填充文本不存在的区域。所以垫片不是没用的。如果我删除垫片,标签会占用所有空格。其次,在这种情况下,Stretch 不适合我。因为我不想修复为标签提供了多少空间。我想根据文本的长度给空格。