Qt adjustSize()模糊性-它实际上在做什么?

Qt adjustSize()模糊性-它实际上在做什么?,qt,layout,qlabel,Qt,Layout,Qlabel,我遇到了一个奇怪的场景,我不理解adjustSize()的输出。我在QLabel上调用adjustSize(),结果大小与minimumSizeHint或sizeHint不匹配-介于两者之间。我唯一能想到的另一个因素是QLabel中文本的长度,但对于不同的长度,我会得到相同的结果,所以这似乎也不正确 以下是确切的情况: 我有一个包含两个QLabel的水平布局 一个QLabel包含文本,具有固定的宽度fw和最小高度mh。如果所有文本都能在该尺寸范围内,则尺寸应精确为fw x mh。如果文本较多,

我遇到了一个奇怪的场景,我不理解adjustSize()的输出。我在QLabel上调用adjustSize(),结果大小与minimumSizeHint或sizeHint不匹配-介于两者之间。我唯一能想到的另一个因素是QLabel中文本的长度,但对于不同的长度,我会得到相同的结果,所以这似乎也不正确

以下是确切的情况:

  • 我有一个包含两个QLabel的水平布局

  • 一个QLabel包含文本,具有固定的宽度fw和最小高度mh。如果所有文本都能在该尺寸范围内,则尺寸应精确为fw x mh。如果文本较多,则高度应增加

  • 第二个QLabel包含一个pixmap,应该始终保持其纵横比。最小宽度和最小高度与pixmap的原始尺寸完全匹配。如果基于文本的QLabel的高度增加,则第二个QLabel需要同时增加宽度和高度,以匹配基于文本的QLabel的新高度,同时保持pixmap的纵横比

这似乎是很容易做到的。在第一个QLabel的文本被更改(动态更改为任意长度(在合理范围内,不超出屏幕边界或任何内容))后,我对第一个QLabel调用adjustSize()。然后,基于生成的高度,我计算比例因子,该比例因子必须增加,以匹配该高度,并使用缩放高度和缩放宽度重置该比例因子


问题是基于文本的QLabel的高度并没有以我所能识别的任何合理方式表现出来。即使文本大大小于起始大小,adjustSize()仍会导致高度增加超过起始最小值。这里我将用一些精确的数字来说明这个问题。最小高度为385。sizeHint表示401,adjustSize表示390。当文本可以轻松容纳385个最小值时,为什么sizeHint是401?为什么adjustSize()选择390,这两个值都不匹配?

手动几何图形管理不包括布局管理。当小部件的几何图形由布局管理时,
adjustSize
setGeometry
不是操作。相反,您需要尝试利用布局以您希望的方式管理标签。也许,以及它链接到的那个,可能与您的情况有关。adjustSize()在这里肯定会起作用-没有它,qlabel将保留其原始大小,在许多情况下允许截断文本。请发布一个完整、自包含的单文件示例。它必须是短期目标