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

这是确切的场景:

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

  • 一个QLabel包含文本,并具有固定宽度fw和最小高度mh . 如果所有文本都适合该大小,则尺寸应精确为fw x mh . 如果有更多文本,高度应该增加 .

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

这似乎应该是容易做到的 . 在第一个QLabel的文本被更改(动态到任意长度(在合理范围内,不超出屏幕边界或任何东西))之后,我在第一个QLabel上调用adjustSize() . 然后,根据得到的高度,我计算像素图必须增加的比例因子以匹配该高度,并使用缩放高度和缩放宽度重置像素图 .

问题是基于文本的QLabel的高度不能以我能辨别的任何合理方式表现 . 即使文本大小小于起始大小,adjustSize()仍会导致高度增加超过起始最小值 . 在这里,我将使用一些确切的数字来说明问题 . 最小高度为385. sizeHint表示401,adjustSize表示390.为什么sizeHint 401的文本可以很容易地适应385的最小值?为什么390由adjustSize()选择,两者都没有匹配?