Qt - 如何控制 QLayout 中的小部件大小

Posted

技术标签:

【中文标题】Qt - 如何控制 QLayout 中的小部件大小【英文标题】:Qt - How to control the widget sizes in QLayout 【发布时间】:2010-11-19 12:23:57 【问题描述】:

我正在尝试在布局中放置一些旋转框、行编辑。但尺寸超出了必需品。下面是图

在这里,我将一个 QScrollArea 小部件和一个 QVBoxLayout 添加到一个 QHBoxLayout 中。然后我将行编辑、旋转框添加到 QVBoxLayout 中。但我想将宽度减小为总宽度的 2/10。有人可以帮我吗?

【问题讨论】:

为什么要发布您要回答的问题? @g19fanatic 我认为有些人可能知道如何解决它。所以我发布了它。因此我只是想节省我的时间(我正在做一个项目)。事实上,我已经尝试过这种拉伸因素。但是,当时并没有显示出预期的效果。它仅在我将该因素应用于 addWidget 和 addLayout 后才显示。如果你想让我删除我的答案,没问题我会投票删除 又是一个恼人的无声投票。我认为堆栈溢出应该为这些只做出沉默的反对票的反对者带来一些好处。而且每个人都知道,没有理由的反对票没有任何意义。 【参考方案1】:

在我看来,在这里使用拉伸因子不是正确的解决方案。这有点“骇人听闻”。拉伸因子很有用,例如当您有两个小部件都使用尽可能多的空间时,但不是以 50:50 的速率。

在这里,如我所见,您有两个小部件(或小部件组),其中一个应该只使用它真正需要的空间,另一个应该占用其余的空间。这就是规模政策的用途。将左侧的水平策略设置为Expanding(如果要防止滚动条,则设置为MinimumExpanding),右侧的设置为Preferred

【讨论】:

小部件只有 setSizePolicy。我在 QVBoxLayout 中找不到相同的 您可以将小部件放入另一个 QWidget 或 QGroupBox【参考方案2】:

这很容易。可以通过给出拉伸因子来完成。这意味着您必须在使用函数时启动值

addWidget(widget,stretchfactor);
       or
addLayout(layout,stretchfactor);

【讨论】:

在我看来,这不是最好的方法。看看我的回答。 添加小部件后也可以使用布局的setStretch()方法。【参考方案3】:

我认为您应该尝试使用 void setSizeConstraint ( SizeConstraint )minimumSize() 继承方法。

Read the doc

【讨论】:

上图不是最大化的,是默认大小。当主小部件最大化时,我希望小部件应该最大化。布局也应该保持比例。【参考方案4】:

看看 QSizePolicy。可能有用。

【讨论】:

以上是关于Qt - 如何控制 QLayout 中的小部件大小的主要内容,如果未能解决你的问题,请参考以下文章

如何在 QLayout 中查找给定类型的小部件?

QLayout 中的重叠小部件

Qt 中的样式表、隐藏的小部件和大小

用户在不使用 QLayout 的情况下扩展/调整 QTextBrowser 小部件的大小

PyQt 中的半可调整大小的小部件

如何计算存储在 Gtk::Grid 中的小部件?