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

时间:2017-02-16 20:58:07

标签: qt layout qlabel

我遇到了一个奇怪的场景,我不理解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()选择,没有匹配值?

0 个答案:

没有答案