Qt 查找QWidget';插入前的高度
我要插入一个小部件,如下所示Qt 查找QWidget';插入前的高度,qt,animation,layout,widget,height,Qt,Animation,Layout,Widget,Height,我要插入一个小部件,如下所示 +--------------------+ | +-------++-------+ | | | || | | | | || | | | | || Label | | | | Label || Label | | | | || | | | | || | | | +-------++-------+ | +--------------------+ 一个QW
+--------------------+
| +-------++-------+ |
| | || | |
| | || | |
| | || Label | |
| | Label || Label | |
| | || | |
| | || | |
| +-------++-------+ |
+--------------------+
一个QWidget元素,包含两个QVBoxLayouts,每个QVBoxLayouts包含一个或多个QLabel。此小部件将被插入到一个垂直布局中,该布局具有一个拉伸单元格,因此所有此类小部件都将位于顶部,并尽可能缩小到较小的高度 结果是这样的
______________________ ← Layout boundary
+--------------------+
| +-------++-------+ |
| | || Label | |
| | Label || Label | | ← Widget shrunk to the smallest
| +-------++-------+ |
+--------------------+
______________________ ← Layout boundary
↑
|
| ← Spacer
|
↓
______________________ ← Layout boundary
但在进行此插入之前,我想知道小部件在插入布局中的大小。可能是内部布局允许的最小尺寸。不知道怎么称呼它
我已经尝试过很多方法,比如在一个备用的不可见布局中插入小部件,这样我可以在插入时检索它的高度,这应该与小部件在我的最终布局中插入时的高度相同
但由于某些原因,当垂直按下小部件时,当小部件的高度最多为50px时,我总是得到480或478。所以我完全迷路了
我必须这样做,因为我需要小部件在插入时进行动画制作,我需要知道从高度1到它的动画制作所需的高度
我怎样才能做到这一点呢?如果没有确切的代码,很难说清楚,但是根据上面的描述,我刚刚尝试重现您的示例,我建议看以下几点:
widget->height()
。相反,请尝试调用widget->sizeHint().height()
。如果父几何体没有对小部件施加任何其他约束,该方法将告诉您小部件希望的大小sizeHint()
,但仍然得到了错误的答案,请查看文档以了解更多信息。我相信这一点很重要,以便为尚未显示的小部件获得更精确的几何图形:
QWidget在完全构造该函数之后但在第一次显示之前调用该函数。如果要确保在执行操作之前对小部件进行抛光,例如,在小部件的sizeHint()重新实现中可能需要正确的字体大小,则可以调用此函数
不是非常相关,但是非常棒的图表;)您尝试过小部件内部布局的QLayout::minimumSize()吗?+1-480的高度几乎可以肯定,因为它从未显示过。sizeHint().height()或layout->minimumSize().height()即使在Display之前都应该返回正确的值。我在发布后大约一小时解决了这个问题,但方式非常糟糕。。。显示(),获取高度,然后隐藏()。你的方法更有效,我已经试过了,而且有效。一开始我是用
->geometry.height()访问的代码>它似乎与您猜到的我使用的相同。问候语。