问:为什么儿童小部件在QGridLayout中重叠?

时间:2014-07-10 12:46:02

标签: qt widget qgridlayout

我有一个固定大小的小部件x。然后我首先拿了一个QScrollArea,然后是一个QGridLayout,我将其设置为scrollAreaWidgetContent的布局。然后我开始在网格布局的(0,0),(0,1),(1,0),(1,1)...布局中添加一些小部件x。然后当我运行程序时,奇怪的是当我垂直缩小窗口时,小部件重叠。

Overlaped widgets

正如预期的那样,当我垂直增加窗口大小时,它们不再重叠。

Non overlapped

但奇怪的是,当我水平缩小窗口时,这个问题不会发生。例如,

Horizontal resizing

我的问题是,为什么会发生这种情况,更重要的是,请记住我想使用gridlayout,如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

正如你在问题中所说: 您的窗口小部件具有固定大小,因此当没有剩余空间时,布局不会缩小它们。 所以问题是:缩小窗口时你想要发生什么?

  1. 如果要缩小窗口小部件,则必须将窗口小部件的sizePolicy从“固定”更改为“首选”。
  2. 如果您想减少布局中小部件的数量,那么您可以在resize事件中添加一个事件处理程序并将其删除
  3. 如果您想禁止缩小窗口,则需要将scrollarea的sizePolicy设置为fixed或minimumSize