Qt can';t在QVBoxLayout中调整小部件的大小

Qt can';t在QVBoxLayout中调整小部件的大小,qt,Qt,我有一个带有QVBoxLayout的容器小部件 我在VBoxLayout中添加了大约100个小部件。他们都有相同的高度。 在某些情况下,需要调整其中一行的大小。我调整小部件的大小(newWidth,newHeight),并在QVBoxLayout上调用layout(),但没有任何变化。大小保持不变 如何在QVBoxLayout中动态更改小部件的高度?根据设计,插入到布局中的小部件的大小调整是不可操作的。布局会调整小部件的大小,而不是您 如果您希望在QVBoxLayout中使用固定高度的小部件,则

我有一个带有QVBoxLayout的容器小部件

我在VBoxLayout中添加了大约100个小部件。他们都有相同的高度。 在某些情况下,需要调整其中一行的大小。我调整小部件的大小(newWidth,newHeight),并在QVBoxLayout上调用layout(),但没有任何变化。大小保持不变


如何在QVBoxLayout中动态更改小部件的高度?

根据设计,插入到布局中的小部件的大小调整是不可操作的。布局会调整小部件的大小,而不是您

如果您希望在QVBoxLayout中使用固定高度的小部件,则必须设置小部件的最小和最大高度,并确保在垂直方向上不会忽略其sizePolicy

如果你想要一个小部件,它的高度是所有其他小部件的两倍。将其拉伸设置为2,将其他小部件的拉伸设置为1。调用
layout->setStretch(索引,拉伸)
。小部件的宽度将按其拉伸比例分配。例如,当所有拉伸为1,一个拉伸为2时,拉伸为2的小部件将获得两倍的空间

在其他条件相同的情况下(这是重要的一点!),拉伸与小部件的像素大小成比例。如果你想,假设所有的小部件都是20像素高,但是一个是30像素高,就这样设置它们的拉伸

如果布局具有精确的高度,因此所有小部件高度+间距+边距的总和等于布局高度,那么布局中的小部件将得到高度=拉伸。相反,如果从布局高度开始,减去顶部和底部的边距以及(小部件计数-1)*间距,则小部件将保留高度。然后,通过将“拉伸”设置为所需的高度,可以在小部件之间手动分配该高度


如果默认情况下小部件太大,您可能需要覆盖小部件的
sizePolicy

谢谢,但这没有任何作用。当我设置Stretch时,对我的小部件的高度没有影响,你在布局中的所有小部件上都调用了它吗?您还应该将所有窗口小部件的sizePolicy设置为在两个方向上都被忽略,至少在开始时是这样。将两个方向的size policy设置为“忽略”可以改善情况。但我还是得到了令人失望的结果。一段2的长度,可以使事物增长3倍。当设置为1时,事情不会退缩。不稳定。它只适用于所有其他小部件,而不是所有小部件。非常奇怪的行为。我不可能在不花几个星期的时间的情况下彻底了解这种行为。我可能需要设计自己的自定义布局。Qt的根本不起作用。我很惊讶在布局中更改小部件的高度会是一项博士级别的任务。