在 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.
这就是我在上面的屏幕截图中所做的,但是:
- 最上面的QHBoxLayout还是占了一半window(根据红色边框判断),标签在其中垂直居中
我想要的是:标签应该与 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:
我能找到的唯一 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.
这就是我在上面的屏幕截图中所做的,但是:
- 最上面的QHBoxLayout还是占了一半window(根据红色边框判断),标签在其中垂直居中
我想要的是:标签应该与 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: