首页 > 解决方案 > 当父尺寸改变时如何改变子部件的尺寸?

问题描述

我有 2 个小部件,第二个小部件是第一个小部件的子级。我以为如果你改变父小部件的大小,子小部件也会改变它的大小,但事实并非如此。我在互联网上搜索了我的问题的解决方案,但也许我在寻找解决方案时没有正确地提出我的问题。我没有找到解决方案,因此在这里写了。

调整父级大小时,我应该怎么做才能使子级小部件改变其大小?

标签: c++qtwidget

解决方案


好吧,无布局的解决方案非常明显:覆盖resizeEvent父级中的方法并驱动子级从那里调整大小。

另一方面,将子小部件保留在父小部件布局中将允许它自动与父小部件一起调整大小,但您的问题是:如何将子小部件位置设置为选择的坐标?

我建议一种技术。

假设您希望孩子水平移动。给父级一个QHBoxLayout布局(将布局边距和间距属性设置为0),并将子级添加到其中,因此它将水平占用整个空间。然后QWidget在左侧子元素的相同布局中添加一个:此小部件将充当填充物。如果您希望孩子为 42 岁,请使用其方法以编程方式x将填充物设置为 42 ,或者将其最小和最大宽度从设计器设置为 42。widthsetFixedWidth

显然,如果您有很多孩子,并且他们可以在任何地方移动(并且可能重叠)完全放弃布局并诉诸我的第一个建议,因为一般来说,布局旨在使事物彼此锚定,也许那不是案子。


推荐阅读