我有一个带有 QVBoxLayout 的容器小部件。
我在 VBoxLayout 中添加了大约 100 个小部件。它们都具有相同的高度。在某些时候,需要调整其中一行的大小。我调整了小部件的大小(newWidth,newHeight)并在 QVBoxLayout 上调用 layout(),但没有任何变化。大小保持固定。
如何动态更改 QVBoxLayout 中小部件的高度?
我有一个带有 QVBoxLayout 的容器小部件。
我在 VBoxLayout 中添加了大约 100 个小部件。它们都具有相同的高度。在某些时候,需要调整其中一行的大小。我调整了小部件的大小(newWidth,newHeight)并在 QVBoxLayout 上调用 layout(),但没有任何变化。大小保持固定。
如何动态更改 QVBoxLayout 中小部件的高度?
根据设计,插入布局中的小部件的大小调整是无操作的。布局大小的小部件,而不是你。
如果要在 QVBoxLayout 中使用固定高度的小部件,则必须设置小部件的最小和最大高度,并确保其 sizePolicy 在垂直方向上不被忽略。
如果您想要一个高度是所有其他小部件的两倍的小部件。将其拉伸设置为 2,并将其他小部件的拉伸设置为 1。调用layout->setStretch(index, stretch)
. 小部件的宽度将与其伸展成比例。例如,所有拉伸为 1,一个拉伸为 2,拉伸为 2 的小部件将获得两倍的空间。
其他一切都相同(这是重要的一点!),拉伸与小部件的像素大小成正比。如果您愿意,假设所有小部件的高度为 20 像素,但有一个高度为 30 像素,只需像这样设置它们的拉伸。
如果布局具有精确的高度,以便所有小部件高度 + 间距 + 边距的总和加起来为布局高度,则布局中的小部件将得到 height=stretch。相反,如果您从布局高度开始,减去顶部和底部边距和 (widget count - 1)*spacing,您将获得小部件的高度。然后,您可以通过将拉伸设置为所需的高度来在小部件之间手动分配该高度。
sizePolicy
如果默认情况下它们太大,您可能需要覆盖这些小部件。