我正在尝试按如下方式安排2x2 QGridLayout:
+-----+-----+
|(1) |(2) |
+-----+ |
|(3) | |
+-----+-----+
我希望能够以编程方式扩展(1)占用整个第一行,如下所示:
+-----------+
|(1) |
+-----+-----+
|(3) |(2) |
+-----+-----+
实际上,我想将任何小部件扩展和收缩到任何方向。
我能够通过检测我需要扩展到的单元格中的小部件来做到这一点。但问题是,在任何方向和任何网格大小上实现这一点是一件痛苦的事情,因为我需要回到刚刚扩展的小部件(1)的初始位置,所以我不需要记住位置,除了我正在扩大/签约的那个。
因此,在上面的示例中,我决定只展开小部件以占据位置0,0,列间距为2.这将导致重叠的小部件,这对我来说没问题。问题是widget(1)将在(2)下面,我猜是因为插入网格的顺序。因此问题是:如何在QGridLayout中控制窗口小部件的重叠优先级?
谢谢!
答案 0 :(得分:1)
也许你可以通过一些实验为你做这样的工作。
这两个镜头都是QVBoxLayout,其中包含两个QHBoxLayouts。您应该能够动态删除和添加从一个QHBoxLayout到另一个QHBoxLayout的按钮。您可以添加或删除间隔符,以确定按钮是否跨越整个宽度。
我意识到它仍在添加和删除小部件,但它可能比网格布局更容易。
答案 1 :(得分:1)
我得到了我的问题的答案。解决方案是在我正在调整大小的小部件上调用raise()。这个“调整大小”实际上是布局中的removeWidget和布局的addWidget(再次),包含新的单元格和单元格跨度信息。在此之后,我在小部件上调用raise(),就是这样。
答案 2 :(得分:0)
我不确定这会做你想做的,但据我所知,你想以任何你想要的方式调整你的三个小部件。
您可以尝试查看QSplitter课程。它允许您更改(手动或以编程方式)小部件的大小,有点像outlook分隔。
它非常易于使用,可能足够灵活,可以满足您的需求。
希望这有帮助。