Qt 如何在q[grid]布局中控制控件重叠优先级?

Qt 如何在q[grid]布局中控制控件重叠优先级?,qt,Qt,我尝试将2x2 QGridLayout安排如下: +-----+-----+ |(1) |(2) | +-----+ | |(3) | | +-----+-----+ +-----------+ |(1) | +-----+-----+ |(3) |(2) | +-----+-----+ 我希望能够通过编程扩展(1)以占据整个第一行,如下所示: +-----+-----+ |(1) |(2) | +-----+ | |(3) |

我尝试将2x2 QGridLayout安排如下:

+-----+-----+
|(1)  |(2)  |
+-----+     |
|(3)  |     |
+-----+-----+
+-----------+
|(1)        |
+-----+-----+
|(3)  |(2)  |
+-----+-----+
我希望能够通过编程扩展(1)以占据整个第一行,如下所示:

+-----+-----+
|(1)  |(2)  |
+-----+     |
|(3)  |     |
+-----+-----+
+-----------+
|(1)        |
+-----+-----+
|(3)  |(2)  |
+-----+-----+
实际上,我想将任何小部件扩展和收缩到任何方向

我可以通过检测我需要扩展到的单元格中的小部件来实现这一点。但问题是,在任何方向和任何网格大小上实现这一点都是一件痛苦的事情,因为我需要回到刚刚展开的小部件(1)的初始位置,所以我不需要记住位置,除了我正在展开/收缩的位置

因此,在上面的示例中,我决定只扩展小部件以占据0,0的位置,列跨度为2。这将导致重叠的小部件,这对我来说是可以的。问题是小部件(1)将位于(2)之下,我猜是因为插入网格的顺序。由此产生了一个问题:如何在QGridLayout中控制小部件的重叠优先级


谢谢

也许你可以通过一些实验来为自己制作这样的东西

两个快照都是QVBoxLayout,其中包含两个QHBoxLayout。您应该能够从一个QHBoxLayout到另一个QHBoxLayout动态删除和添加按钮。您可以添加或删除间隔符,以确定按钮是否跨越整个宽度


我意识到它仍然在添加和删除小部件,但这可能比网格布局要简单一些。

我不确定这是否能满足您的需要,但据我所知,您希望以任何方式调整三个小部件的大小

你可以试着深入课堂。它允许您(手动或编程)更改小部件的大小,有点像outlook分隔

它非常容易使用,并且可能足够灵活,可以满足您的需求


希望这有帮助。

我得到了问题的答案。解决方案是在我正在调整大小的小部件上调用raise()。这个“调整大小”实际上是一个从布局中移除的小部件和一个添加到布局中的小部件(同样),带有新的单元格和单元格跨度信息。在这之后,我在小部件上调用raise(),就这样。

您是否尝试过按照添加小部件的顺序进行操作,以查看是否有什么问题?是的。秩序很重要。但是我不想删除所有的小部件并重新插入它们,除非没有其他处理方法。