在 QtDesigner 中,使标签小部件贴在顶部,并具有与标签相同高度的垂直布局?

Make label widget stick to top, and have vertical layout same height as label, in QtDesigner?

我能找到的唯一 post 与此类似的是 https://forum.qt.io/topic/62467/2-horizontal-layouts-1-with-fixed-height - 但不幸的是,它没有回答我想在这里问的问题。

这是我得到的布局:

所以,我有一个主要的 QVBoxLayout,里面有两个 QHBoxLayout。我希望顶部的 QHBoxLayout 包含一个水平拉伸的标签,但高度固定为 64 像素。从链接 post:

So with layouts, u set constraints on the widgets, not on the layouts.

这就是我在上面的屏幕截图中所做的,但是:

我想要的是:标签应该与 window 的顶部对齐 - 布局应该 "wrap" 在它周围,所以我最终在顶部有一个红色的布局边框64 像素(加上可能存在的 padding/margins)。

这可以在 QtDesigner 中实现吗?如果可以,怎么做?

为了保证顶部的单元格不会太大,你需要让底部的单元格是可扩展的。为此,添加一个垂直垫片就足够了。像这样:

<layout ...>
 <item row="1" column="0">
  <spacer name="verticalSpacer">
   <property name="orientation">
    <enum>Qt::Vertical</enum>
   </property>
   <property name="sizeType">
    <enum>QSizePolicy::Expanding</enum>
   </property>
   <property name="sizeHint" stdset="0">
    <size>
     <width>...</width>
     <height>...</height>
    </size>
   </property>
  </spacer>
 </item>

很明显,您打算将其他项目添加到底部单元格中。如果其中至少一个是垂直可扩展的,则不需要那个垂直间隔符。

您可以告诉 Boxlayouts 他们应该如何将 space 分配给 layoutStretch 属性 中的单个 columns/rows。它是一个 , 分隔的拉伸因子列表。只需将 0,1 放在那里,使顶部布局不拉伸,底部占据所有可用 space: