gpt4 book ai didi

qt - 在插入之前查找 QWidget 的高度

转载 作者:行者123 更新时间:2023-12-04 08:14:40 29 4
gpt4 key购买 nike

我有一个要插入的小部件,看起来像这样

+--------------------+
| +-------++-------+ |
| | || | |
| | || | |
| | || Label | |
| | Label || Label | |
| | || | |
| | || | |
| +-------++-------+ |
+--------------------+

包含两个 QVBoxLayouts 的 QWidget 元素,每个包含一个或多个 QLabels。这个 Widget 将被插入到具有拉伸(stretch)单元格的垂直布局中,因此所有此类小部件都将移至顶部并缩小到可能的较小高度.

导致这样的事情。
______________________ ← Layout boundary
+--------------------+
| +-------++-------+ |
| | || Label | |
| | Label || Label | | ← Widget shrunk to the smallest
| +-------++-------+ |
+--------------------+
______________________ ← Layout boundary

|
| ← Spacer
|

______________________ ← Layout boundary

但在进行此插入之前,我想知道小部件在插入布局中的大小。也许是其内部布局允许的最小尺寸。不知道怎么称呼它。

我已经尝试了很多方法,例如将小部件插入到备用不可见布局中,这样我可以在插入时检索它的高度,这应该与小部件在我的最终布局中插入时所采用的高度相同。

但由于某种原因,当垂直按下小部件时,我总是得到 480 或 478 高度。所以我完全迷失了。

我必须这样做,因为我需要小部件在插入时进行动画处理,并且我需要知道从高度 1 到它的动画所需的高度。

我怎样才能做到这一点?

最佳答案

如果没有确切的代码,很难确定,但是刚刚尝试从上面的描述中重现您的示例,我建议您查看以下内容:

  • 听起来您实际上是在调用 widget->height()在小部件显示之前。相反,请尝试调用 widget->sizeHint().height()反而。 QWidget::sizeHint()方法告诉您小部件想要的大小,如果父几何没有对其施加任何其他约束。
  • 如果您正在获取 sizeHint()仍然得到错误的答案,请查看 QWidget::ensurePolished() 的文档.我认为调用它很重要,以获得尚未显示的小部件的更准确的几何形状:

    QWidget calls this function after it has been fully constructed but before it is shown the very first time. You can call this function if you want to ensure that the widget is polished before doing an operation, e.g., the correct font size might be needed in the widget's sizeHint() reimplementation.

  • 如果您仍然遇到问题,请查看 QWidget::sizePolicy() 的文档。 , 和类 QSizePolicy Class Reference .我必须承认,无论我阅读了多少次 enum QSizePolicy::Policy 上的文档,它们永远不会全部沉入其中。一个不正确的尺寸策略值很容易弄乱您的布局。

    在实际应用大小策略之前,值得在 Qt Designer 中尝试不同的大小策略。
  • 关于qt - 在插入之前查找 QWidget 的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7450363/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com