如何控制窗口小部件在[网格]布局中重叠优先级?

时间:2010-09-27 16:27:15

标签: qt

我正在尝试按如下方式安排2x2 QGridLayout:

+-----+-----+
|(1)  |(2)  |
+-----+     |
|(3)  |     |
+-----+-----+

我希望能够以编程方式扩展(1)占用整个第一行,如下所示:

+-----------+
|(1)        |
+-----+-----+
|(3)  |(2)  |
+-----+-----+

实际上,我想将任何小部件扩展和收缩到任何方向。

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

因此,在上面的示例中,我决定只展开小部件以占据位置0,0,列间距为2.这将导致重叠的小部件,这对我来说没问题。问题是widget(1)将在(2)下面,我猜是因为插入网格的顺序。因此问题是:如何在QGridLayout中控制窗口小部件的重叠优先级?

谢谢!

3 个答案:

答案 0 :(得分:1)

也许你可以通过一些实验为你做这样的工作。

alt text

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

我意识到它仍在添加和删除小部件,但它可能比网格布局更容易。

答案 1 :(得分:1)

我得到了我的问题的答案。解决方案是在我正在调整大小的小部件上调用raise()。这个“调整大小”实际上是布局中的removeWidget和布局的addWidget(再次),包含新的单元格和单元格跨度信息。在此之后,我在小部件上调用raise(),就是这样。

答案 2 :(得分:0)

我不确定这会做你想做的,但据我所知,你想以任何你想要的方式调整你的三个小部件。

您可以尝试查看QSplitter课程。它允许您更改(手动或以编程方式)小部件的大小,有点像outlook分隔。

它非常易于使用,可能足够灵活,可以满足您的需求。

希望这有帮助。